
#include <stdio.h>
#include <stdint.h>
#include <stdlib.h>
#include <string.h>
#include <iostream>
#include <sstream>
#include <time.h>
#include "md5.h"
#include "GBase64.h"

using namespace std;

//#include "defs.h"

#ifdef _WIN32
#define ASM_START __asm {
#else
#define ASM_START __asm {
#endif

#ifdef _WIN32
#define ASM_END }
#else
#define ASM_END }
#endif

#include <windows.h>

#include <openssl/rsa.h>
#include <openssl/pem.h>
#include <openssl/evp.h>
#include <memory>

HMODULE hDll = NULL;
FARPROC pkcCtrl = NULL;
FARPROC pkcDestroy = NULL;
FARPROC pkcEncrypt = NULL;
FARPROC pkcCreate = NULL;
FARPROC hashAlgData = NULL;

void init_lib()
{
	hDll = LoadLibrary(TEXT("utility.dll"));

	//std::cout << "load lib return " << hDll << endl;

	pkcCtrl = GetProcAddress(hDll, "pkcCtrl");

	//std::cout << "GetProcAddress return " << pkcCtrl << endl;

	pkcDestroy = GetProcAddress(hDll, "pkcDestroy");
	pkcEncrypt = GetProcAddress(hDll, "pkcEncrypt");
	pkcCreate = GetProcAddress(hDll, "pkcCreate");
	hashAlgData = GetProcAddress(hDll, "hashAlgData");

	return;
}


int gen_key1(unsigned char *out, unsigned char *in)
{
    unsigned char *v2; // eax1
    signed int v3; // edi1
    signed int result; // eax3
    
    v2 = out;
    
    for (int i = 0; i < 8; ++i) {
        out[i] = in[i] | 0x80;
    }
    
    result = 1;
    do
    {
        out[result] ^= *(unsigned char *)(result + in - 1);
        ++result;
    }
    while ( result < 8 );
    return result;
}


static unsigned char byte_86B4B8[] =
{
	0x80, 0x00, 0x40, 0x00, 0x20, 0x00, 0x10, 0x00, 0x08, 0x00,
	0x04, 0x00, 0x02, 0x00, 0x01, 0x00
};


static unsigned char byte_86B4C8[] =
{
	0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00,
	0x20, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x08, 0x00,
	0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00,
	0x01, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00,
	0x00, 0x20, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x08,
	0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00,
	0x00, 0x01, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x40, 0x00,
	0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00,
	0x08, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00,
	0x00, 0x00, 0x01, 0x00, 0x00, 0x00
};

static unsigned char byte_86B528[] =
{
	0x38, 0x30, 0x28, 0x20, 0x18, 0x10, 0x08, 0x00, 0x39, 0x31,
	0x29, 0x21, 0x19, 0x11, 0x09, 0x01, 0x3A, 0x32, 0x2A, 0x22,
	0x1A, 0x12, 0x0A, 0x02, 0x3B, 0x33, 0x2B, 0x23, 0x3E, 0x36,
	0x2E, 0x26, 0x1E, 0x16, 0x0E, 0x06, 0x3D, 0x35, 0x2D, 0x25,
	0x1D, 0x15, 0x0D, 0x05, 0x3C, 0x34, 0x2C, 0x24, 0x1C, 0x14,
	0x0C, 0x04, 0x1B, 0x13, 0x0B, 0x03
};

static unsigned char byte_86B560[] =
{
	0x01, 0x02, 0x04, 0x06, 0x08, 0x0A, 0x0C, 0x0E, 0x0F, 0x11,
	0x13, 0x15, 0x17, 0x19, 0x1B, 0x1C
};

static unsigned char byte_86B570[] =
{
	0x0D, 0x10, 0x0A, 0x17, 0x00, 0x04, 0x02, 0x1B, 0x0E, 0x05,
	0x14, 0x09, 0x16, 0x12, 0x0B, 0x03, 0x19, 0x07, 0x0F, 0x06,
	0x1A, 0x13, 0x0C, 0x01
};

static unsigned char byte_86B588[] =
{
	0x28, 0x33, 0x1E, 0x24, 0x2E, 0x36, 0x1D, 0x27, 0x32, 0x2C,
	0x20, 0x2F, 0x2B, 0x30, 0x26, 0x37, 0x21, 0x34, 0x2D, 0x29,
	0x31, 0x23, 0x1C, 0x1F
};


static unsigned char byte_86B5A0[] =
{
	0x00, 0x04, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x01, 0x00, 0x04, 0x04, 0x01, 0x01, 0x04, 0x00, 0x01, 0x01,
	0x04, 0x04, 0x01, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x01, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x01, 0x01,
	0x04, 0x04, 0x01, 0x01, 0x00, 0x04, 0x00, 0x00, 0x04, 0x04,
	0x00, 0x01, 0x04, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01,
	0x04, 0x00, 0x00, 0x00, 0x04, 0x04, 0x00, 0x00, 0x00, 0x04,
	0x00, 0x01, 0x00, 0x04, 0x00, 0x01, 0x00, 0x04, 0x01, 0x00,
	0x00, 0x04, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00,
	0x01, 0x01, 0x04, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01, 0x00,
	0x04, 0x00, 0x00, 0x01, 0x04, 0x00, 0x00, 0x01, 0x04, 0x00,
	0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x04, 0x00, 0x00,
	0x04, 0x04, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
	0x01, 0x00, 0x04, 0x04, 0x01, 0x01, 0x04, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x01, 0x01, 0x00, 0x04, 0x01, 0x01, 0x00, 0x00,
	0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x04, 0x00, 0x00,
	0x04, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x04,
	0x01, 0x00, 0x04, 0x00, 0x00, 0x01, 0x00, 0x04, 0x00, 0x00,
	0x04, 0x00, 0x00, 0x00, 0x04, 0x04, 0x00, 0x01, 0x04, 0x04,
	0x01, 0x00, 0x04, 0x04, 0x01, 0x01, 0x04, 0x00, 0x01, 0x00,
	0x00, 0x00, 0x01, 0x01, 0x04, 0x04, 0x00, 0x01, 0x04, 0x00,
	0x00, 0x01, 0x04, 0x04, 0x00, 0x00, 0x04, 0x04, 0x01, 0x00,
	0x00, 0x04, 0x01, 0x01, 0x04, 0x04, 0x00, 0x00, 0x00, 0x04,
	0x00, 0x01, 0x00, 0x04, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00,
	0x04, 0x00, 0x01, 0x00, 0x00, 0x04, 0x01, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x04, 0x00, 0x01, 0x01
};

static unsigned char byte_86B6A0[] =
{
	0x20, 0x80, 0x10, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80,
	0x00, 0x00, 0x20, 0x80, 0x10, 0x00, 0x00, 0x00, 0x10, 0x00,
	0x20, 0x00, 0x00, 0x00, 0x20, 0x00, 0x10, 0x80, 0x20, 0x80,
	0x00, 0x80, 0x20, 0x00, 0x00, 0x80, 0x20, 0x80, 0x10, 0x80,
	0x00, 0x80, 0x10, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x80,
	0x00, 0x80, 0x00, 0x00, 0x10, 0x00, 0x20, 0x00, 0x00, 0x00,
	0x20, 0x00, 0x10, 0x80, 0x00, 0x80, 0x10, 0x00, 0x20, 0x00,
	0x10, 0x00, 0x20, 0x80, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x80, 0x00, 0x80, 0x00, 0x00, 0x20, 0x80,
	0x10, 0x00, 0x00, 0x00, 0x10, 0x80, 0x20, 0x00, 0x10, 0x00,
	0x20, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80,
	0x10, 0x00, 0x20, 0x80, 0x00, 0x00, 0x00, 0x80, 0x10, 0x80,
	0x00, 0x00, 0x10, 0x80, 0x20, 0x80, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x20, 0x80, 0x10, 0x00, 0x20, 0x00, 0x10, 0x80,
	0x00, 0x00, 0x10, 0x00, 0x20, 0x80, 0x00, 0x80, 0x00, 0x00,
	0x10, 0x80, 0x00, 0x80, 0x10, 0x80, 0x00, 0x80, 0x00, 0x00,
	0x00, 0x00, 0x10, 0x80, 0x00, 0x80, 0x00, 0x80, 0x20, 0x00,
	0x00, 0x00, 0x20, 0x80, 0x10, 0x80, 0x20, 0x80, 0x10, 0x00,
	0x20, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x80, 0x20, 0x80, 0x00, 0x00, 0x00, 0x80, 0x10, 0x80,
	0x00, 0x00, 0x10, 0x00, 0x20, 0x00, 0x00, 0x80, 0x20, 0x00,
	0x10, 0x00, 0x20, 0x80, 0x00, 0x80, 0x20, 0x00, 0x00, 0x80,
	0x20, 0x00, 0x10, 0x00, 0x00, 0x80, 0x10, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x80, 0x00, 0x80, 0x20, 0x80, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x80, 0x20, 0x00, 0x10, 0x80, 0x20, 0x80,
	0x10, 0x80, 0x00, 0x80, 0x10, 0x00
};

static unsigned char byte_86B7A0[] =
{
	0x08, 0x02, 0x00, 0x00, 0x00, 0x02, 0x02, 0x08, 0x00, 0x00,
	0x00, 0x00, 0x08, 0x00, 0x02, 0x08, 0x00, 0x02, 0x00, 0x08,
	0x00, 0x00, 0x00, 0x00, 0x08, 0x02, 0x02, 0x00, 0x00, 0x02,
	0x00, 0x08, 0x08, 0x00, 0x02, 0x00, 0x08, 0x00, 0x00, 0x08,
	0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x02, 0x00, 0x08, 0x02,
	0x02, 0x08, 0x08, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x08,
	0x08, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x08, 0x00,
	0x00, 0x00, 0x00, 0x02, 0x02, 0x08, 0x00, 0x02, 0x00, 0x00,
	0x00, 0x02, 0x02, 0x00, 0x00, 0x00, 0x02, 0x08, 0x08, 0x00,
	0x02, 0x08, 0x08, 0x02, 0x02, 0x00, 0x08, 0x02, 0x00, 0x08,
	0x00, 0x02, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x08, 0x02,
	0x00, 0x08, 0x08, 0x00, 0x00, 0x00, 0x08, 0x02, 0x02, 0x08,
	0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x02,
	0x02, 0x08, 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x02, 0x00,
	0x08, 0x02, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02,
	0x02, 0x08, 0x00, 0x02, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x02, 0x00, 0x00, 0x08, 0x00, 0x02, 0x00, 0x08, 0x02,
	0x02, 0x08, 0x00, 0x02, 0x00, 0x08, 0x08, 0x00, 0x00, 0x08,
	0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00,
	0x02, 0x08, 0x08, 0x02, 0x00, 0x08, 0x00, 0x00, 0x02, 0x00,
	0x00, 0x00, 0x00, 0x08, 0x08, 0x02, 0x02, 0x08, 0x08, 0x00,
	0x00, 0x00, 0x08, 0x02, 0x02, 0x00, 0x00, 0x02, 0x02, 0x00,
	0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x02, 0x08, 0x08, 0x02,
	0x00, 0x08, 0x08, 0x02, 0x00, 0x00, 0x00, 0x00, 0x02, 0x08,
	0x08, 0x02, 0x02, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00,
	0x02, 0x08, 0x00, 0x02, 0x02, 0x00
};

static unsigned char byte_86B8A0[] =
{
	0x01, 0x20, 0x80, 0x00, 0x81, 0x20, 0x00, 0x00, 0x81, 0x20,
	0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x20, 0x80, 0x00,
	0x81, 0x00, 0x80, 0x00, 0x01, 0x00, 0x80, 0x00, 0x01, 0x20,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x80, 0x00,
	0x00, 0x20, 0x80, 0x00, 0x81, 0x20, 0x80, 0x00, 0x81, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x80, 0x00,
	0x01, 0x00, 0x80, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x20,
	0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x01, 0x20, 0x80, 0x00,
	0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x01, 0x20,
	0x00, 0x00, 0x80, 0x20, 0x00, 0x00, 0x81, 0x00, 0x80, 0x00,
	0x01, 0x00, 0x00, 0x00, 0x80, 0x20, 0x00, 0x00, 0x80, 0x00,
	0x80, 0x00, 0x00, 0x20, 0x00, 0x00, 0x80, 0x20, 0x80, 0x00,
	0x81, 0x20, 0x80, 0x00, 0x81, 0x00, 0x00, 0x00, 0x80, 0x00,
	0x80, 0x00, 0x01, 0x00, 0x80, 0x00, 0x00, 0x20, 0x80, 0x00,
	0x81, 0x20, 0x80, 0x00, 0x81, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x80, 0x00,
	0x80, 0x20, 0x00, 0x00, 0x80, 0x00, 0x80, 0x00, 0x81, 0x00,
	0x80, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x20, 0x80, 0x00,
	0x81, 0x20, 0x00, 0x00, 0x81, 0x20, 0x00, 0x00, 0x80, 0x00,
	0x00, 0x00, 0x81, 0x20, 0x80, 0x00, 0x81, 0x00, 0x00, 0x00,
	0x01, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x01, 0x00,
	0x80, 0x00, 0x01, 0x20, 0x00, 0x00, 0x80, 0x20, 0x80, 0x00,
	0x81, 0x00, 0x80, 0x00, 0x01, 0x20, 0x00, 0x00, 0x80, 0x20,
	0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x01, 0x20, 0x80, 0x00,
	0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x20,
	0x00, 0x00, 0x80, 0x20, 0x80, 0x00
};

static unsigned char byte_86B9A0[] =
{
	0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x08, 0x02, 0x00, 0x00,
	0x08, 0x02, 0x00, 0x01, 0x00, 0x42, 0x00, 0x00, 0x08, 0x00,
	0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00,
	0x08, 0x02, 0x00, 0x01, 0x08, 0x40, 0x00, 0x00, 0x08, 0x00,
	0x00, 0x01, 0x00, 0x02, 0x00, 0x01, 0x08, 0x40, 0x00, 0x01,
	0x00, 0x42, 0x00, 0x00, 0x08, 0x42, 0x00, 0x01, 0x08, 0x00,
	0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00,
	0x08, 0x40, 0x00, 0x00, 0x08, 0x40, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x01, 0x00, 0x40, 0x00, 0x01, 0x08, 0x42, 0x00, 0x01,
	0x08, 0x42, 0x00, 0x01, 0x00, 0x02, 0x00, 0x00, 0x08, 0x42,
	0x00, 0x01, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x42, 0x00, 0x01, 0x08, 0x02, 0x00, 0x00, 0x00, 0x02,
	0x00, 0x00, 0x00, 0x42, 0x00, 0x01, 0x08, 0x00, 0x00, 0x00,
	0x08, 0x00, 0x00, 0x01, 0x00, 0x42, 0x00, 0x01, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00,
	0x08, 0x02, 0x00, 0x01, 0x00, 0x42, 0x00, 0x01, 0x08, 0x40,
	0x00, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00,
	0x08, 0x42, 0x00, 0x01, 0x08, 0x02, 0x00, 0x01, 0x08, 0x40,
	0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00,
	0x08, 0x42, 0x00, 0x01, 0x08, 0x42, 0x00, 0x01, 0x08, 0x00,
	0x00, 0x00, 0x00, 0x42, 0x00, 0x01, 0x08, 0x42, 0x00, 0x00,
	0x08, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x40,
	0x00, 0x00, 0x00, 0x42, 0x00, 0x01, 0x08, 0x00, 0x00, 0x01,
	0x00, 0x02, 0x00, 0x01, 0x00, 0x40, 0x00, 0x00, 0x08, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x40, 0x00, 0x01,
	0x08, 0x02, 0x00, 0x01, 0x00, 0x40
};

static unsigned char byte_86BAA0[] =
{
	0x10, 0x00, 0x00, 0x20, 0x00, 0x00, 0x40, 0x20, 0x00, 0x40,
	0x00, 0x00, 0x10, 0x40, 0x40, 0x20, 0x00, 0x00, 0x40, 0x20,
	0x10, 0x00, 0x00, 0x00, 0x10, 0x40, 0x40, 0x20, 0x00, 0x00,
	0x40, 0x00, 0x00, 0x40, 0x00, 0x20, 0x10, 0x40, 0x40, 0x00,
	0x00, 0x00, 0x40, 0x00, 0x10, 0x00, 0x00, 0x20, 0x10, 0x00,
	0x40, 0x00, 0x00, 0x40, 0x00, 0x20, 0x00, 0x00, 0x00, 0x20,
	0x10, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00,
	0x40, 0x00, 0x10, 0x40, 0x00, 0x20, 0x00, 0x40, 0x00, 0x00,
	0x00, 0x40, 0x40, 0x00, 0x10, 0x40, 0x00, 0x20, 0x10, 0x00,
	0x00, 0x00, 0x10, 0x00, 0x40, 0x20, 0x10, 0x00, 0x40, 0x20,
	0x00, 0x00, 0x00, 0x00, 0x10, 0x40, 0x40, 0x00, 0x00, 0x40,
	0x40, 0x20, 0x10, 0x40, 0x00, 0x00, 0x00, 0x40, 0x40, 0x00,
	0x00, 0x40, 0x40, 0x20, 0x00, 0x00, 0x00, 0x20, 0x00, 0x40,
	0x00, 0x20, 0x10, 0x00, 0x00, 0x00, 0x10, 0x00, 0x40, 0x20,
	0x00, 0x40, 0x40, 0x00, 0x10, 0x40, 0x40, 0x20, 0x00, 0x00,
	0x40, 0x00, 0x10, 0x40, 0x00, 0x00, 0x10, 0x00, 0x00, 0x20,
	0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x20, 0x00, 0x00,
	0x00, 0x20, 0x10, 0x40, 0x00, 0x00, 0x10, 0x00, 0x00, 0x20,
	0x10, 0x40, 0x40, 0x20, 0x00, 0x40, 0x40, 0x00, 0x00, 0x00,
	0x40, 0x20, 0x10, 0x40, 0x40, 0x00, 0x00, 0x40, 0x40, 0x20,
	0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x40, 0x20, 0x10, 0x00,
	0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x40, 0x20,
	0x10, 0x40, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x10, 0x00,
	0x40, 0x00, 0x10, 0x40, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x40, 0x40, 0x20, 0x00, 0x00, 0x00, 0x20, 0x10, 0x00,
	0x40, 0x00, 0x10, 0x40, 0x00, 0x20
};

static unsigned char byte_86BBA0[] =
{
	0x00, 0x00, 0x20, 0x00, 0x02, 0x00, 0x20, 0x04, 0x02, 0x08,
	0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00,
	0x02, 0x08, 0x00, 0x04, 0x02, 0x08, 0x20, 0x00, 0x00, 0x08,
	0x20, 0x04, 0x02, 0x08, 0x20, 0x04, 0x00, 0x00, 0x20, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x04, 0x02, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x02, 0x00, 0x20, 0x04,
	0x02, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x04, 0x02, 0x08,
	0x20, 0x00, 0x02, 0x00, 0x20, 0x00, 0x00, 0x08, 0x00, 0x04,
	0x02, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x04, 0x00, 0x08,
	0x20, 0x04, 0x02, 0x00, 0x20, 0x00, 0x00, 0x00, 0x20, 0x04,
	0x00, 0x08, 0x00, 0x00, 0x02, 0x08, 0x00, 0x00, 0x02, 0x08,
	0x20, 0x04, 0x00, 0x08, 0x20, 0x00, 0x02, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x04, 0x00, 0x08, 0x20, 0x00, 0x00, 0x00,
	0x00, 0x04, 0x00, 0x08, 0x20, 0x00, 0x00, 0x00, 0x20, 0x00,
	0x02, 0x08, 0x00, 0x04, 0x02, 0x08, 0x00, 0x04, 0x02, 0x00,
	0x20, 0x04, 0x02, 0x00, 0x20, 0x04, 0x02, 0x00, 0x00, 0x00,
	0x02, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x08,
	0x00, 0x04, 0x00, 0x00, 0x20, 0x00, 0x00, 0x08, 0x20, 0x04,
	0x02, 0x08, 0x00, 0x00, 0x02, 0x08, 0x20, 0x00, 0x00, 0x08,
	0x20, 0x04, 0x02, 0x08, 0x00, 0x00, 0x02, 0x00, 0x00, 0x04,
	0x02, 0x08, 0x20, 0x04, 0x00, 0x00, 0x20, 0x04, 0x00, 0x08,
	0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00,
	0x02, 0x08, 0x20, 0x04, 0x00, 0x00, 0x00, 0x00, 0x02, 0x08,
	0x20, 0x00, 0x00, 0x00, 0x20, 0x04, 0x00, 0x08, 0x00, 0x00,
	0x02, 0x00, 0x00, 0x04, 0x00, 0x08, 0x00, 0x04, 0x00, 0x08,
	0x00, 0x00, 0x02, 0x00, 0x20, 0x00
};


static unsigned char byte_86BCA0[] =
{
	0x40, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00,
	0x04, 0x00, 0x40, 0x10, 0x04, 0x10, 0x00, 0x00, 0x00, 0x10,
	0x40, 0x10, 0x00, 0x10, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x10, 0x40, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x10,
	0x40, 0x10, 0x04, 0x10, 0x00, 0x10, 0x04, 0x00, 0x00, 0x10,
	0x04, 0x10, 0x40, 0x10, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00,
	0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x10, 0x40, 0x00,
	0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x40, 0x10, 0x00, 0x00,
	0x00, 0x10, 0x04, 0x00, 0x40, 0x00, 0x04, 0x00, 0x40, 0x00,
	0x04, 0x10, 0x00, 0x10, 0x04, 0x10, 0x40, 0x10, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00,
	0x04, 0x10, 0x40, 0x00, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10,
	0x40, 0x10, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x40, 0x10,
	0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x10, 0x04, 0x10,
	0x00, 0x10, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x40, 0x00,
	0x04, 0x10, 0x00, 0x10, 0x00, 0x00, 0x40, 0x10, 0x04, 0x00,
	0x00, 0x10, 0x00, 0x10, 0x40, 0x00, 0x00, 0x00, 0x40, 0x00,
	0x00, 0x10, 0x00, 0x00, 0x04, 0x10, 0x40, 0x00, 0x04, 0x10,
	0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x04, 0x00, 0x40, 0x10,
	0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x40, 0x10, 0x04, 0x10,
	0x40, 0x00, 0x04, 0x00, 0x40, 0x00, 0x00, 0x10, 0x00, 0x00,
	0x04, 0x10, 0x00, 0x10, 0x00, 0x10, 0x40, 0x10, 0x00, 0x10,
	0x00, 0x00, 0x00, 0x00, 0x40, 0x10, 0x04, 0x10, 0x00, 0x10,
	0x04, 0x00, 0x00, 0x10, 0x04, 0x00, 0x40, 0x10, 0x00, 0x00,
	0x40, 0x10, 0x00, 0x00, 0x40, 0x00, 0x04, 0x00, 0x00, 0x00,
	0x00, 0x10, 0x00, 0x10, 0x04, 0x10
};


/////////////////////////////////////////////////////////////////////////////////////////////////////////////////
static unsigned char byte_0086BDA0[] =
{
	0x39, 0x00, 0x00, 0x00, 0x31, 0x00, 0x00, 0x00, 0x29, 0x00,
	0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00,
	0x11, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x01, 0x00,
	0x00, 0x00, 0x3A, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00,
	0x2A, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x1A, 0x00,
	0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00,
	0x02, 0x00, 0x00, 0x00, 0x3B, 0x00, 0x00, 0x00, 0x33, 0x00,
	0x00, 0x00, 0x2B, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00,
	0x1B, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x0B, 0x00,
	0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x00,
	0x34, 0x00, 0x00, 0x00, 0x2C, 0x00, 0x00, 0x00, 0x24, 0x00,
	0x00, 0x00
};

static unsigned char byte_0086BE10[] =
{
	0x3F, 0x00, 0x00, 0x00, 0x37, 0x00, 0x00, 0x00, 0x2F, 0x00,
	0x00, 0x00, 0x27, 0x00, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x00,
	0x17, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x07, 0x00,
	0x00, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x00,
	0x2E, 0x00, 0x00, 0x00, 0x26, 0x00, 0x00, 0x00, 0x1E, 0x00,
	0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00,
	0x06, 0x00, 0x00, 0x00, 0x3D, 0x00, 0x00, 0x00, 0x35, 0x00,
	0x00, 0x00, 0x2D, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00,
	0x1D, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x0D, 0x00,
	0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x00,
	0x14, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x04, 0x00,
	0x00, 0x00
};

static unsigned char byte_0086BE80[] =
{
	0x0E, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x0B, 0x00,
	0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
	0x05, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x1C, 0x00,
	0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00,
	0x15, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x17, 0x00,
	0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00,
	0x04, 0x00, 0x00, 0x00, 0x1A, 0x00, 0x00, 0x00, 0x08, 0x00,
	0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00,
	0x1B, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x0D, 0x00,
	0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x29, 0x00, 0x00, 0x00,
	0x34, 0x00, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x00, 0x25, 0x00,
	0x00, 0x00, 0x2F, 0x00, 0x00, 0x00, 0x37, 0x00, 0x00, 0x00,
	0x1E, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x33, 0x00,
	0x00, 0x00, 0x2D, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00,
	0x30, 0x00, 0x00, 0x00, 0x2C, 0x00, 0x00, 0x00, 0x31, 0x00,
	0x00, 0x00, 0x27, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00,
	0x22, 0x00, 0x00, 0x00, 0x35, 0x00, 0x00, 0x00, 0x2E, 0x00,
	0x00, 0x00, 0x2A, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00,
	0x24, 0x00, 0x00, 0x00, 0x1D, 0x00, 0x00, 0x00, 0x20, 0x00,
	0x00, 0x00
};

static unsigned char byte_0086BF40[] =
{
	0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00,
	0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00,
	0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00,
	0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00,
	0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00,
	0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00,
	0x01, 0x00, 0x00, 0x00
};

static unsigned char byte_0086BF80[] =
{
	0x3A, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00, 0x2A, 0x00,
	0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x1A, 0x00, 0x00, 0x00,
	0x12, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x02, 0x00,
	0x00, 0x00, 0x3C, 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00,
	0x2C, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x1C, 0x00,
	0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00,
	0x04, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x36, 0x00,
	0x00, 0x00, 0x2E, 0x00, 0x00, 0x00, 0x26, 0x00, 0x00, 0x00,
	0x1E, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x0E, 0x00,
	0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00,
	0x38, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x28, 0x00,
	0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00,
	0x10, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00
};

static unsigned char byte_0086C000[] =
{
	0x39, 0x00, 0x00, 0x00, 0x31, 0x00, 0x00, 0x00, 0x29, 0x00,
	0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00,
	0x11, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x01, 0x00,
	0x00, 0x00, 0x3B, 0x00, 0x00, 0x00, 0x33, 0x00, 0x00, 0x00,
	0x2B, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x1B, 0x00,
	0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00,
	0x03, 0x00, 0x00, 0x00, 0x3D, 0x00, 0x00, 0x00, 0x35, 0x00,
	0x00, 0x00, 0x2D, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00,
	0x1D, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x0D, 0x00,
	0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x00,
	0x37, 0x00, 0x00, 0x00, 0x2F, 0x00, 0x00, 0x00, 0x27, 0x00,
	0x00, 0x00, 0x1F, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00,
	0x0F, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00
};

static unsigned char byte_0086C080[] =
{
	0x28, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x30, 0x00,
	0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00,
	0x18, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x20, 0x00,
	0x00, 0x00, 0x27, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00,
	0x2F, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x37, 0x00,
	0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x00,
	0x1F, 0x00, 0x00, 0x00, 0x26, 0x00, 0x00, 0x00, 0x06, 0x00,
	0x00, 0x00, 0x2E, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00,
	0x36, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x3E, 0x00,
	0x00, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00,
	0x05, 0x00, 0x00, 0x00, 0x2D, 0x00, 0x00, 0x00, 0x0D, 0x00,
	0x00, 0x00, 0x35, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00,
	0x3D, 0x00, 0x00, 0x00, 0x1D, 0x00, 0x00, 0x00, 0x24, 0x00,
	0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x2C, 0x00, 0x00, 0x00,
	0x0C, 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00, 0x14, 0x00,
	0x00, 0x00, 0x3C, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x00,
	0x23, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x2B, 0x00,
	0x00, 0x00, 0x0B, 0x00, 0x00, 0x00, 0x33, 0x00, 0x00, 0x00,
	0x13, 0x00, 0x00, 0x00, 0x3B, 0x00, 0x00, 0x00, 0x1B, 0x00,
	0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00,
	0x2A, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x32, 0x00,
	0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x3A, 0x00, 0x00, 0x00,
	0x1A, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x01, 0x00,
	0x00, 0x00, 0x29, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00,
	0x31, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x39, 0x00,
	0x00, 0x00, 0x19, 0x00, 0x00, 0x00
};

static unsigned char byte_0086C180[] =
{
	0x20, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00,
	0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00,
	0x05, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x05, 0x00,
	0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00,
	0x08, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x08, 0x00,
	0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00,
	0x0B, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x0D, 0x00,
	0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00,
	0x0E, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x10, 0x00,
	0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00,
	0x11, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x13, 0x00,
	0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00,
	0x14, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x16, 0x00,
	0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00,
	0x19, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x19, 0x00,
	0x00, 0x00, 0x1A, 0x00, 0x00, 0x00, 0x1B, 0x00, 0x00, 0x00,
	0x1C, 0x00, 0x00, 0x00, 0x1D, 0x00, 0x00, 0x00, 0x1C, 0x00,
	0x00, 0x00, 0x1D, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00,
	0x1F, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x01, 0x00,
	0x00, 0x00
};

static unsigned char byte_0086C240[] =
{
	0x10, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x14, 0x00,
	0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x1D, 0x00, 0x00, 0x00,
	0x0C, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x11, 0x00,
	0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00,
	0x17, 0x00, 0x00, 0x00, 0x1A, 0x00, 0x00, 0x00, 0x05, 0x00,
	0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x00,
	0x0A, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x08, 0x00,
	0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00,
	0x20, 0x00, 0x00, 0x00, 0x1B, 0x00, 0x00, 0x00, 0x03, 0x00,
	0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00,
	0x0D, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x06, 0x00,
	0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00,
	0x04, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00
};

static unsigned char byte_0086C2C0[] =
{
	0x0E, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x0D, 0x00,
	0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00,
	0x0F, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00, 0x08, 0x00,
	0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00,
	0x06, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x05, 0x00,
	0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x00,
	0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00,
	0x0E, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x0D, 0x00,
	0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00,
	0x06, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x0B, 0x00,
	0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00,
	0x03, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x04, 0x00,
	0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00,
	0x08, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x06, 0x00,
	0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00,
	0x0F, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x09, 0x00,
	0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00,
	0x0A, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00,
	0x08, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00,
	0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
	0x07, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x0B, 0x00,
	0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00,
	0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00,
	0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00,
	0x01, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x0E, 0x00,
	0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00,
	0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x09, 0x00,
	0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00,
	0x0D, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00,
	0x03, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x04, 0x00,
	0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00,
	0x02, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x0E, 0x00,
	0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x01, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x06, 0x00,
	0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00,
	0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x00,
	0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00,
	0x0A, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x0D, 0x00,
	0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00,
	0x08, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x06, 0x00,
	0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00,
	0x02, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x0D, 0x00,
	0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00,
	0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0F, 0x00,
	0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00,
	0x0B, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x07, 0x00,
	0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x05, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x09, 0x00,
	0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x09, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x06, 0x00,
	0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00,
	0x05, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0D, 0x00,
	0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00,
	0x0B, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00,
	0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00,
	0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00,
	0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00,
	0x06, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x02, 0x00,
	0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00,
	0x0E, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x0B, 0x00,
	0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
	0x0D, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x04, 0x00,
	0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00,
	0x0F, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x0B, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
	0x02, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x05, 0x00,
	0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00,
	0x07, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0A, 0x00,
	0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x06, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x08, 0x00,
	0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00,
	0x0F, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x03, 0x00,
	0x00, 0x00, 0x0B, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00,
	0x02, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x07, 0x00,
	0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00,
	0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00,
	0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00,
	0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x08, 0x00,
	0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00,
	0x0C, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x0F, 0x00,
	0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00,
	0x0B, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x06, 0x00,
	0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x07, 0x00,
	0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00,
	0x01, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x0E, 0x00,
	0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00,
	0x06, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00,
	0x07, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x0F, 0x00,
	0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00,
	0x0E, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x02, 0x00,
	0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00,
	0x03, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00,
	0x01, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x08, 0x00,
	0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00,
	0x05, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00, 0x0C, 0x00,
	0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00,
	0x0E, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x0C, 0x00,
	0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
	0x07, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x0B, 0x00,
	0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00,
	0x05, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0F, 0x00,
	0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x0E, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x0E, 0x00,
	0x00, 0x00, 0x0B, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00,
	0x0C, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x07, 0x00,
	0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
	0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x00,
	0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00,
	0x09, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x06, 0x00,
	0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00,
	0x01, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00, 0x0A, 0x00,
	0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00,
	0x08, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x09, 0x00,
	0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00,
	0x06, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00,
	0x08, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x07, 0x00,
	0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00,
	0x02, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x06, 0x00,
	0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x09, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x04, 0x00,
	0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00,
	0x0C, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0A, 0x00,
	0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00,
	0x02, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x08, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00,
	0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x0E, 0x00,
	0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00,
	0x0B, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x0F, 0x00,
	0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00,
	0x07, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x09, 0x00,
	0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00,
	0x01, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x0E, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00,
	0x03, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x09, 0x00,
	0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00,
	0x05, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x08, 0x00,
	0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00,
	0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00,
	0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
	0x0D, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00, 0x06, 0x00,
	0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00,
	0x02, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x09, 0x00,
	0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00,
	0x0A, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00, 0x0E, 0x00,
	0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00,
	0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00,
	0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00,
	0x0B, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x0E, 0x00,
	0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x08, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x03, 0x00,
	0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00,
	0x07, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x0A, 0x00,
	0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
	0x0D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00,
	0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00,
	0x09, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0A, 0x00,
	0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00,
	0x05, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x02, 0x00,
	0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00,
	0x06, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x04, 0x00,
	0x00, 0x00, 0x0B, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00,
	0x0C, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x07, 0x00,
	0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00,
	0x0F, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x08, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00,
	0x09, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x06, 0x00,
	0x00, 0x00, 0x0B, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00,
	0x08, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x04, 0x00,
	0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00,
	0x09, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00,
	0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0C, 0x00,
	0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00,
	0x08, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x06, 0x00,
	0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00,
	0x01, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x09, 0x00,
	0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00,
	0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00,
	0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
	0x0F, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x08, 0x00,
	0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00,
	0x07, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x0C, 0x00,
	0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00,
	0x0B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x00,
	0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00,
	0x07, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00, 0x04, 0x00,
	0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00,
	0x0C, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x02, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00,
	0x0A, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x0F, 0x00,
	0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00,
	0x08, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00,
	0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00,
	0x04, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x08, 0x00,
	0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00,
	0x0C, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00,
	0x06, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00, 0x00, 0x00
};

void server_en_de_crypt(unsigned char* out_buff, unsigned char* src_buff, int32_t *len_ptr, unsigned char* key1, unsigned char* key2, int en_or_de)
{
	ASM_START
		push ebp
		push esp

		push en_or_de
		push key2
		push key1
		push len_ptr
		push src_buff
		push out_buff

		call xiadan_00672320

		add esp, 0x18

		pop esp
		pop ebp
	ASM_END

		return;
	
	ASM_START
		xiadan_00672320:; <= Procedure Start

			MOV EAX, DWORD PTR SS : [ESP + 018h]
			MOV ECX, DWORD PTR SS : [ESP + 014h]
			MOV EDX, DWORD PTR SS : [ESP + 010h]
			PUSH EAX
			MOV EAX, DWORD PTR SS : [ESP + 010h]
			PUSH ECX
			MOV ECX, DWORD PTR SS : [ESP + 010h]
			PUSH EDX
			MOV EDX, DWORD PTR SS : [ESP + 010h]
			PUSH EAX
			PUSH ECX
			PUSH EDX
			CALL xiadan_00672490; <= Jump / Call Address Not Resolved
			ADD ESP, 018h
			RETN; <= Procedure End

		xiadan_00672490:; <= Procedure Start

			PUSH EBX
			PUSH EBP
			PUSH ESI
			MOV ESI, DWORD PTR SS : [ESP + 018h]
			PUSH EDI
			MOV EAX, DWORD PTR DS : [ESI]
			ADD EAX, 8
			PUSH EAX
			CALL malloc ;<= Jump / Call Address Not Resolved
			MOV EBP, DWORD PTR SS : [ESP + 02Ch]
			MOV ECX, DWORD PTR SS : [ESP + 024h]
			MOV EDX, DWORD PTR SS : [ESP + 018h]
			PUSH EBP
			MOV EBX, EAX
			PUSH ECX
			PUSH ESI
			PUSH EBX
			PUSH EDX
			CALL xiadan_006723A0; <= Jump / Call Address Not Resolved
			MOV ECX, DWORD PTR SS : [ESP + 03Ch]
			MOV EDI, DWORD PTR SS : [ESP + 030h]
			XOR EAX, EAX
			TEST EBP, EBP
			SETE AL
			PUSH EAX
			PUSH ECX
			PUSH ESI
			PUSH EDI
			PUSH EBX
			CALL xiadan_006723A0; <= Jump / Call Address Not Resolved
			MOV EDX, DWORD PTR SS : [ESP + 04Ch]
			PUSH EBP
			PUSH EDX
			PUSH ESI
			PUSH EBX
			PUSH EDI
			CALL xiadan_006723A0; <= Jump / Call Address Not Resolved
			MOV ECX, DWORD PTR DS : [ESI]
			MOV ESI, EBX
			MOV EAX, ECX
			ADD ESP, 040h
			SHR ECX, 2
			REP MOVS DWORD PTR ES : [EDI], DWORD PTR DS : [ESI]
			MOV ECX, EAX
			PUSH EBX
			AND ECX, 3
			REP MOVS BYTE PTR ES : [EDI], BYTE PTR DS : [ESI]
			CALL free; <= Jump / Call Address Not Resolved
			ADD ESP, 4
			POP EDI
			POP ESI
			POP EBP
			POP EBX
			RETN; <= Procedure End


		xiadan_006723A0:; <= Procedure Start

			MOV EAX, DWORD PTR SS : [ESP + 0Ch]
			SUB ESP, 8
			PUSH EBX
			MOV EBX, DWORD PTR SS : [ESP + 010h]
			PUSH EBP
			MOV EBP, DWORD PTR DS : [EAX]
			PUSH ESI
			MOV ESI, EBP
			TEST EBP, EBP
			JLE xiadan_0067247A
			PUSH EDI
			MOV EDI, DWORD PTR SS : [ESP + 020h]
			SUB EDI, EBX
			MOV DWORD PTR SS : [ESP + 01Ch], EDI

			xiadan_006723C5:

			MOV EAX, DWORD PTR SS : [ESP + 02Ch]
			TEST EAX, EAX
			JNZ xiadan_00672435
			CMP EBP, 8
			JGE xiadan_00672424
			XOR ECX, ECX
			MOV EAX, 8
			MOV DWORD PTR SS : [ESP + 010h], ECX
			SUB EAX, EBP
			MOV DWORD PTR SS : [ESP + 014h], ECX
			MOV ECX, EBP
			ADD ESI, EAX
			MOV EDX, ECX
			MOV DWORD PTR SS : [ESP + 020h], ESI
			MOV ESI, EBX
			LEA EDI, DWORD PTR SS : [ESP + 010h]
			MOV EAX, DWORD PTR SS : [ESP + 028h]
			SHR ECX, 2
			REP MOVS DWORD PTR ES : [EDI], DWORD PTR DS : [ESI]
			MOV ECX, EDX
			PUSH 0
			AND ECX, 3
			PUSH EAX
			REP MOVS BYTE PTR ES : [EDI], BYTE PTR DS : [ESI]
			MOV ECX, DWORD PTR SS : [ESP + 024h]
			LEA EDX, DWORD PTR SS : [ESP + 018h]
			ADD ECX, EBX
			PUSH ECX
			PUSH EDX
			CALL xiadan_00673790; <= Jump / Call Address Not Resolved
			MOV ESI, DWORD PTR SS : [ESP + 030h]
			MOV EDI, DWORD PTR SS : [ESP + 02Ch]
			ADD ESP, 010h
			JMP xiadan_0067245E

			xiadan_00672424:

			MOV EAX, DWORD PTR DS : [EBX]
			MOV ECX, DWORD PTR DS : [EBX + 4]
			MOV DWORD PTR SS : [ESP + 010h], EAX
			MOV DWORD PTR SS : [ESP + 014h], ECX
			PUSH 0
			JMP xiadan_00672448

			xiadan_00672435:

			CMP EBP, 7
			JLE xiadan_0067245E
			MOV EDX, DWORD PTR DS : [EBX]
			MOV ECX, DWORD PTR DS : [EBX + 4]
			MOV DWORD PTR SS : [ESP + 010h], EDX
			MOV DWORD PTR SS : [ESP + 014h], ECX
			PUSH EAX

			xiadan_00672448:

			MOV EDX, DWORD PTR SS : [ESP + 02Ch]
			LEA EAX, DWORD PTR DS : [EDI + EBX]
			PUSH EDX
			LEA ECX, DWORD PTR SS : [ESP + 018h]
			PUSH EAX
			PUSH ECX
			CALL xiadan_00673790; <= Jump / Call Address Not Resolved
			ADD ESP, 010h

			xiadan_0067245E:

			SUB EBP, 8
			ADD EBX, 8
			TEST EBP, EBP
			JG xiadan_006723C5
			MOV EDX, DWORD PTR SS : [ESP + 024h]
			POP EDI
			MOV DWORD PTR DS : [EDX], ESI
			POP ESI
			POP EBP
			POP EBX
			ADD ESP, 8
			RETN

			xiadan_0067247A:

			MOV DWORD PTR DS : [EAX], ESI
			POP ESI
			POP EBP
			POP EBX
			ADD ESP, 8
			RETN; <= Procedure End

		

		xiadan_00673790:; <= Procedure Start

				MOV ECX, DWORD PTR SS : [ESP + 0Ch]
				SUB ESP, 0370h
				LEA EAX, DWORD PTR SS : [ESP]
				PUSH EAX
				PUSH ECX
				CALL xiadan_00673980
				LEA EDX, DWORD PTR SS : [ESP + 048h]
				LEA EAX, DWORD PTR SS : [ESP + 8]
				PUSH EDX
				PUSH EAX
				CALL xiadan_00673A10
				MOV EAX, DWORD PTR SS : [ESP + 0390h]
				MOV EDX, DWORD PTR SS : [ESP + 0388h]
				ADD ESP, 010h
				LEA ECX, DWORD PTR SS : [ESP + 040h]
				TEST EAX, EAX
				MOV EAX, DWORD PTR SS : [ESP + 0374h]
				PUSH ECX
				PUSH EDX
				PUSH EAX
				JNZ xiadan_006737E6
				CALL xiadan_00673800
				ADD ESP, 0Ch
				ADD ESP, 0370h
				RETN

				xiadan_006737E6:

				CALL xiadan_006738C0
				ADD ESP, 0Ch
				ADD ESP, 0370h
				RETN; <= Procedure End

				NOP
				NOP
				NOP
				NOP
				NOP
				NOP
				NOP
				NOP
				NOP
				NOP
				NOP

		xiadan_00673800:; <= Procedure Start

				MOV EDX, DWORD PTR SS : [ESP + 4]
				SUB ESP, 0140h
				LEA EAX, DWORD PTR SS : [ESP + 040h]
				LEA ECX, DWORD PTR SS : [ESP]
				PUSH EBX
				PUSH EBP
				PUSH ESI
				PUSH EDI
				PUSH EAX
				PUSH ECX
				PUSH EDX
				CALL xiadan_00673B60
				MOV EBP, DWORD PTR SS : [ESP + 0168h]
				ADD ESP, 0Ch
				MOV EBX, 1

				xiadan_0067382D:

				LEA EAX, DWORD PTR SS : [ESP + 090h]
				PUSH EBP
				LEA ECX, DWORD PTR SS : [ESP + 0D4h]
				PUSH EAX
				LEA EDX, DWORD PTR SS : [ESP + 058h]
				PUSH ECX
				LEA EAX, DWORD PTR SS : [ESP + 01Ch]
				PUSH EDX
				PUSH EAX
				PUSH EBX
				CALL xiadan_00673C10
				MOV ECX, 8
				LEA ESI, DWORD PTR SS : [ESP + 0A8h]
				LEA EDI, DWORD PTR SS : [ESP + 068h]
				ADD ESP, 018h
				REP MOVS DWORD PTR ES : [EDI], DWORD PTR DS : [ESI]
				INC EBX
				MOV ECX, 8
				LEA ESI, DWORD PTR SS : [ESP + 0D0h]
				LEA EDI, DWORD PTR SS : [ESP + 010h]
				CMP EBX, 011h
				REP MOVS DWORD PTR ES : [EDI], DWORD PTR DS : [ESI]
				JL xiadan_0067382D
				LEA ECX, DWORD PTR SS : [ESP + 010h]
				LEA EDX, DWORD PTR SS : [ESP + 050h]
				PUSH ECX
				LEA EAX, DWORD PTR SS : [ESP + 0114h]
				PUSH EDX
				PUSH EAX
				CALL xiadan_00673BC0
				MOV ECX, DWORD PTR SS : [ESP + 0164h]
				LEA EDX, DWORD PTR SS : [ESP + 011Ch]
				PUSH ECX
				PUSH EDX
				CALL xiadan_006739C0
				ADD ESP, 014h
				POP EDI
				POP ESI
				POP EBP
				POP EBX
				ADD ESP, 0140h
				RETN; <= Procedure End

				NOP
				NOP
				NOP
				NOP
				NOP
				NOP
				NOP
				NOP
				NOP
				NOP
				NOP

		xiadan_006738C0:; <= Procedure Start

				MOV EDX, DWORD PTR SS : [ESP + 4]
				SUB ESP, 0140h
				LEA EAX, DWORD PTR SS : [ESP + 040h]
				LEA ECX, DWORD PTR SS : [ESP]
				PUSH EBX
				PUSH EBP
				PUSH ESI
				PUSH EDI
				PUSH EAX
				PUSH ECX
				PUSH EDX
				CALL xiadan_00673B60
				MOV EBP, DWORD PTR SS : [ESP + 0168h]
				ADD ESP, 0Ch
				MOV EBX, 010h

				xiadan_006738ED:

				LEA EAX, DWORD PTR SS : [ESP + 090h]
				PUSH EBP
				LEA ECX, DWORD PTR SS : [ESP + 0D4h]
				PUSH EAX
				LEA EDX, DWORD PTR SS : [ESP + 058h]
				PUSH ECX
				LEA EAX, DWORD PTR SS : [ESP + 01Ch]
				PUSH EDX
				PUSH EAX
				PUSH EBX
				CALL xiadan_00673C10
				MOV ECX, 8
				LEA ESI, DWORD PTR SS : [ESP + 0A8h]
				LEA EDI, DWORD PTR SS : [ESP + 068h]
				ADD ESP, 018h
				REP MOVS DWORD PTR ES : [EDI], DWORD PTR DS : [ESI]
				DEC EBX
				MOV ECX, 8
				LEA ESI, DWORD PTR SS : [ESP + 0D0h]
				LEA EDI, DWORD PTR SS : [ESP + 010h]
				TEST EBX, EBX
				REP MOVS DWORD PTR ES : [EDI], DWORD PTR DS : [ESI]
				JG xiadan_006738ED
				LEA ECX, DWORD PTR SS : [ESP + 010h]
				LEA EDX, DWORD PTR SS : [ESP + 050h]
				PUSH ECX
				LEA EAX, DWORD PTR SS : [ESP + 0114h]
				PUSH EDX
				PUSH EAX
				CALL xiadan_00673BC0
				MOV ECX, DWORD PTR SS : [ESP + 0164h]
				LEA EDX, DWORD PTR SS : [ESP + 011Ch]
				PUSH ECX
				PUSH EDX
				CALL xiadan_006739C0
				ADD ESP, 014h
				POP EDI
				POP ESI
				POP EBP
				POP EBX
				ADD ESP, 0140h
				RETN; <= Procedure End

				NOP
				NOP
				NOP
				NOP
				NOP
				NOP
				NOP
				NOP
				NOP
				NOP
				NOP
				NOP

		xiadan_00673980:; <= Procedure Start

				PUSH EBX
				PUSH EBP
				MOV EBP, DWORD PTR SS : [ESP + 0Ch]
				PUSH ESI
				MOV ESI, DWORD PTR SS : [ESP + 014h]
				PUSH EDI
				XOR EBX, EBX

				xiadan_0067398E:

				MOV ECX, 080h
				MOV EDI, 8

				xiadan_00673998:

				XOR EAX, EAX
				MOV AL, BYTE PTR DS : [EBX + EBP]
				CDQ
				IDIV ECX
				AND AL, 1
				MOV BYTE PTR DS : [ESI], AL
				MOV EAX, ECX
				CDQ
				SUB EAX, EDX
				INC ESI
				SAR EAX, 1
				DEC EDI
				MOV ECX, EAX
				JNZ xiadan_00673998
				INC EBX
				CMP EBX, 8
				JL xiadan_0067398E
				POP EDI
				POP ESI
				POP EBP
				POP EBX
				RETN; <= Procedure End

				NOP
				NOP
				NOP
				NOP

		xiadan_006739C0:; <= Procedure Start

				PUSH EBX
				PUSH EBP
				MOV EBP, DWORD PTR SS : [ESP + 0Ch]
				PUSH ESI
				PUSH EDI
				MOV EDI, DWORD PTR SS : [ESP + 018h]
				XOR ESI, ESI

				xiadan_006739CE:

				MOV ECX, 080h
				MOV BYTE PTR DS : [ESI + EDI], 0
				MOV EBX, 8

				xiadan_006739DC:

				MOV AL, BYTE PTR SS : [EBP]
				MOV DL, BYTE PTR DS : [ESI + EDI]
				IMUL CL
				ADD DL, AL
				MOV EAX, ECX
				MOV BYTE PTR DS : [ESI + EDI], DL
				INC EBP
				CDQ
				SUB EAX, EDX
				SAR EAX, 1
				DEC EBX
				MOV ECX, EAX
				JNZ xiadan_006739DC
				INC ESI
				CMP ESI, 8
				JL xiadan_006739CE
				POP EDI
				POP ESI
				POP EBP
				POP EBX
				RETN; <= Procedure End

				NOP
				NOP
				NOP
				NOP
				NOP
				NOP
				NOP
				NOP
				NOP
				NOP
				NOP
				NOP
				NOP
				NOP
				NOP

		xiadan_00673A10:; <= Procedure Start

				SUB ESP, 03BCh
				XOR ECX, ECX
				MOV EAX, offset byte_0086BDA0
				PUSH EBX
				PUSH EBP
				PUSH ESI
				MOV ESI, DWORD PTR SS : [ESP + 03CCh]
				PUSH EDI

				xiadan_00673A28:

				MOV EDX, DWORD PTR DS : [EAX]
				ADD EAX, 4
				INC ECX
				CMP EAX, offset byte_0086BE10
				MOV DL, BYTE PTR DS : [EDX + ESI - 1]
				MOV BYTE PTR SS : [ESP + ECX + 013h], DL
				JL xiadan_00673A28
				XOR ECX, ECX
				MOV EAX, offset byte_0086BE10

				xiadan_00673A44:

				MOV EDX, DWORD PTR DS : [EAX]
				ADD EAX, 4
				INC ECX
				CMP EAX, offset byte_0086BE80
				MOV DL, BYTE PTR DS : [EDX + ESI - 1]
				MOV BYTE PTR SS : [ESP + ECX + 01EFh], DL
				JL xiadan_00673A44
				MOV EAX, DWORD PTR SS : [ESP + 03D4h]
				MOV EDI, offset byte_0086BF40
				ADD EAX, 030h
				XOR ESI, ESI
				MOV DWORD PTR SS : [ESP + 010h], EAX

				xiadan_00673A71:

				MOV ECX, DWORD PTR DS : [EDI]
				LEA EBX, DWORD PTR SS : [ESP + ESI + 030h]
				PUSH ECX
				LEA EDX, DWORD PTR SS : [ESP + ESI + 018h]
				PUSH EBX
				PUSH EDX
				CALL xiadan_00673AD0
				MOV EAX, DWORD PTR DS : [EDI]
				LEA EBP, DWORD PTR SS : [ESP + ESI + 0218h]
				PUSH EAX
				LEA ECX, DWORD PTR SS : [ESP + ESI + 0200h]
				PUSH EBP
				PUSH ECX
				CALL xiadan_00673AD0
				MOV EDX, DWORD PTR SS : [ESP + 028h]
				PUSH EDX
				PUSH EBP
				PUSH EBX
				CALL xiadan_00673B10
				MOV EBX, DWORD PTR SS : [ESP + 034h]
				ADD EDI, 4
				ADD ESP, 024h
				ADD EBX, 030h
				ADD ESI, 01Ch
				CMP EDI, offset byte_0086BF80
				MOV DWORD PTR SS : [ESP + 010h], EBX
				JL xiadan_00673A71
				POP EDI
				POP ESI
				POP EBP
				POP EBX
				ADD ESP, 03BCh
				RETN; <= Procedure End

				NOP
				NOP

		xiadan_00673AD0:; <= Procedure Start

				MOV ECX, DWORD PTR SS : [ESP + 8]
				PUSH EBX
				MOV EBX, DWORD PTR SS : [ESP + 8]
				PUSH EBP
				PUSH ESI
				MOV ESI, DWORD PTR SS : [ESP + 018h]
				PUSH EDI
				SUB ESI, ECX
				MOV EDI, 01Ch

				xiadan_00673AE7:

				LEA EAX, DWORD PTR DS : [ESI + ECX]
				MOV EBP, 01Ch
				CDQ
				IDIV EBP
				INC ECX
				DEC EDI
				MOV AL, BYTE PTR DS : [EDX + EBX]
				MOV BYTE PTR DS : [ECX - 1], AL
				JNZ xiadan_00673AE7
				POP EDI
				POP ESI
				POP EBP
				POP EBX
				RETN; <= Procedure End

				NOP
				NOP
				NOP
				NOP
				NOP
				NOP
				NOP
				NOP
				NOP
				NOP
				NOP
				NOP
				NOP
				NOP
				NOP

		xiadan_00673B10:; <= Procedure Start

				SUB ESP, 038h
				MOV ECX, 7
				MOV EAX, offset byte_0086BE80
				PUSH ESI
				MOV ESI, DWORD PTR SS : [ESP + 040h]
				PUSH EDI
				LEA EDI, DWORD PTR SS : [ESP + 8]
				REP MOVS DWORD PTR ES : [EDI], DWORD PTR DS : [ESI]
				MOV ESI, DWORD PTR SS : [ESP + 048h]
				MOV ECX, 7
				LEA EDI, DWORD PTR SS : [ESP + 024h]
				REP MOVS DWORD PTR ES : [EDI], DWORD PTR DS : [ESI]
				MOV ECX, DWORD PTR SS : [ESP + 04Ch]
				POP EDI
				POP ESI

				xiadan_00673B3E:

				MOV EDX, DWORD PTR DS : [EAX]
				ADD EAX, 4
				INC ECX
				CMP EAX, offset byte_0086BF40
				MOV DL, BYTE PTR SS : [ESP + EDX - 1]
				MOV BYTE PTR DS : [ECX - 1], DL
				JL xiadan_00673B3E
				ADD ESP, 038h
				RETN; <= Procedure End

				NOP
				NOP
				NOP
				NOP
				NOP
				NOP
				NOP
				NOP
				NOP
				NOP

		xiadan_00673B60:; <= Procedure Start

				MOV ECX, DWORD PTR SS : [ESP + 4]
				SUB ESP, 040h
				LEA EAX, DWORD PTR SS : [ESP]
				PUSH ESI
				PUSH EAX
				PUSH ECX
				CALL xiadan_00673980
				MOV ESI, DWORD PTR SS : [ESP + 054h]
				ADD ESP, 8
				XOR ECX, ECX
				MOV EAX, offset byte_0086BF80

				xiadan_00673B81:

				MOV EDX, DWORD PTR DS : [EAX]
				ADD EAX, 4
				INC ECX
				CMP EAX, offset byte_0086C000
				MOV DL, BYTE PTR SS : [ESP + EDX + 3]
				MOV BYTE PTR DS : [ECX + ESI - 1], DL
				JL xiadan_00673B81
				MOV ESI, DWORD PTR SS : [ESP + 050h]
				XOR ECX, ECX
				MOV EAX, offset byte_0086C000

				xiadan_00673BA1:

				MOV EDX, DWORD PTR DS : [EAX]
				ADD EAX, 4
				INC ECX
				CMP EAX, offset byte_0086C080
				MOV DL, BYTE PTR SS : [ESP + EDX + 3]
				MOV BYTE PTR DS : [ECX + ESI - 1], DL
				JL xiadan_00673BA1
				POP ESI
				ADD ESP, 040h
				RETN; <= Procedure End

				NOP
				NOP
				NOP
				NOP
				NOP

		xiadan_00673BC0:; <= Procedure Start

				SUB ESP, 040h
				MOV ECX, 8
				MOV EAX, offset byte_0086C080
				PUSH ESI
				MOV ESI, DWORD PTR SS : [ESP + 04Ch]
				PUSH EDI
				LEA EDI, DWORD PTR SS : [ESP + 8]
				REP MOVS DWORD PTR ES : [EDI], DWORD PTR DS : [ESI]
				MOV ESI, DWORD PTR SS : [ESP + 054h]
				MOV ECX, 8
				LEA EDI, DWORD PTR SS : [ESP + 028h]
				REP MOVS DWORD PTR ES : [EDI], DWORD PTR DS : [ESI]
				MOV ESI, DWORD PTR SS : [ESP + 04Ch]
				XOR ECX, ECX

				xiadan_00673BEE:

				MOV EDX, DWORD PTR DS : [EAX]
				ADD EAX, 4
				INC ECX
				CMP EAX, offset byte_0086C180
				MOV DL, BYTE PTR SS : [ESP + EDX + 7]
				MOV BYTE PTR DS : [ECX + ESI - 1], DL
				JL xiadan_00673BEE
				POP EDI
				POP ESI
				ADD ESP, 040h
				RETN; <= Procedure End

				NOP
				NOP
				NOP
				NOP
				NOP
				NOP
				NOP

		xiadan_00673C10:; <= Procedure Start

				SUB ESP, 080h
				XOR ECX, ECX
				MOV EAX, offset byte_0086C180
				PUSH EBX
				PUSH EBP
				MOV EBP, DWORD PTR SS : [ESP + 094h]
				PUSH ESI
				PUSH EDI

				xiadan_00673C28:

				MOV EDX, DWORD PTR DS : [EAX]
				ADD EAX, 4
				INC ECX
				CMP EAX, offset byte_0086C240
				MOV DL, BYTE PTR DS : [EDX + EBP - 1]
				MOV BYTE PTR SS : [ESP + ECX + 0Fh], DL
				JL xiadan_00673C28
				MOV ECX, DWORD PTR SS : [ESP + 094h]
				MOV EDX, DWORD PTR SS : [ESP + 0A8h]
				XOR EAX, EAX
				LEA ECX, DWORD PTR DS : [ECX + ECX * 2]
				SHL ECX, 4
				ADD ECX, EDX

				xiadan_00673C55:

				MOV DL, BYTE PTR DS : [ECX + EAX]
				MOV BL, BYTE PTR SS : [ESP + EAX + 010h]
				ADD DL, BL
				AND DL, 1
				MOV BYTE PTR SS : [ESP + EAX + 010h], DL
				INC EAX
				CMP EAX, 030h
				JL xiadan_00673C55
				LEA EAX, DWORD PTR SS : [ESP + 050h]
				LEA ECX, DWORD PTR SS : [ESP + 010h]
				PUSH EAX
				PUSH ECX
				CALL xiadan_00673D00
				ADD ESP, 8
				XOR ECX, ECX
				MOV EAX, offset byte_0086C240

				xiadan_00673C84:

				MOV EDX, DWORD PTR DS : [EAX]
				ADD EAX, 4
				INC ECX
				CMP EAX, offset byte_0086C2C0
				MOV DL, BYTE PTR SS : [ESP + EDX + 04Fh]
				MOV BYTE PTR SS : [ESP + ECX + 0Fh], DL
				JL xiadan_00673C84
				MOV ESI, DWORD PTR SS : [ESP + 098h]
				MOV EDI, DWORD PTR SS : [ESP + 0A4h]
				LEA EAX, DWORD PTR SS : [ESP + 010h]
				LEA EDX, DWORD PTR SS : [ESP + 010h]
				XOR ECX, ECX
				SUB ESI, EAX
				SUB EDI, EDX

				xiadan_00673CB5:

				MOV BL, BYTE PTR SS : [ESP + ECX + 010h]
				LEA EAX, DWORD PTR SS : [ESP + ECX + 010h]
				MOV DL, BYTE PTR DS : [ESI + EAX]
				ADD DL, BL
				AND DL, 1
				INC ECX
				CMP ECX, 020h
				MOV BYTE PTR DS : [EDI + EAX], DL
				JL xiadan_00673CB5
				MOV EAX, DWORD PTR SS : [ESP + 0A0h]
				MOV ECX, EBP
				SUB ECX, EAX
				MOV ESI, 020h

				xiadan_00673CDE:

				MOV DL, BYTE PTR DS : [ECX + EAX]
				MOV BYTE PTR DS : [EAX], DL
				INC EAX
				DEC ESI
				JNZ xiadan_00673CDE
				POP EDI
				POP ESI
				POP EBP
				POP EBX
				ADD ESP, 080h
				RETN; <= Procedure End

				NOP
				NOP
				NOP
				NOP
				NOP
				NOP
				NOP
				NOP
				NOP
				NOP
				NOP
				NOP
				NOP
				NOP

		xiadan_00673D00:; <= Procedure Start

				SUB ESP, 020h
				MOV EAX, DWORD PTR SS : [ESP + 024h]
				PUSH EBX
				PUSH EBP
				PUSH ESI
				LEA ECX, DWORD PTR DS : [EAX + 5]
				MOV ESI, EAX
				MOV EDX, EAX
				PUSH EDI
				SUB ESI, ECX
				XOR EBP, EBP
				XOR EDI, EDI
				SUB EDX, ECX
				INC ESI
				MOV DWORD PTR SS : [ESP + 034h], EDX
				MOV DWORD PTR SS : [ESP + 010h], ESI
				MOV ESI, EAX
				SUB ESI, ECX
				ADD ESI, 2
				MOV DWORD PTR SS : [ESP + 014h], ESI
				MOV ESI, EAX
				SUB ESI, ECX
				SUB EAX, ECX
				ADD ESI, 3
				ADD EAX, 4
				MOV DWORD PTR SS : [ESP + 018h], ESI
				MOV DWORD PTR SS : [ESP + 01Ch], EAX
				JMP xiadan_00673D48

				xiadan_00673D44:

				MOV EDX, DWORD PTR SS : [ESP + 034h]

				xiadan_00673D48:

				MOVSX EAX, BYTE PTR DS : [EDX + ECX]
				MOV ESI, 8
				MOV EBX, 4
				LEA EDX, DWORD PTR DS : [EAX + EDI * 2]
				MOVSX EAX, BYTE PTR DS : [ECX]
				LEA EDX, DWORD PTR DS : [EAX + EDX * 2]
				MOV EAX, DWORD PTR SS : [ESP + 010h]
				MOVSX EAX, BYTE PTR DS : [EAX + ECX]
				LEA EDX, DWORD PTR DS : [EAX + EDX * 2]
				MOV EAX, DWORD PTR SS : [ESP + 014h]
				MOVSX EAX, BYTE PTR DS : [EAX + ECX]
				LEA EDX, DWORD PTR DS : [EAX + EDX * 2]
				MOV EAX, DWORD PTR SS : [ESP + 018h]
				MOVSX EAX, BYTE PTR DS : [EAX + ECX]
				LEA EDX, DWORD PTR DS : [EAX + EDX * 2]
				MOV EAX, DWORD PTR SS : [ESP + 01Ch]
				MOVSX EAX, BYTE PTR DS : [EAX + ECX]
				LEA EDX, DWORD PTR DS : [EAX + EDX * 2]
				MOV AL, BYTE PTR DS : byte_0086C2C0[EDX * 4]
				MOV BYTE PTR SS : [ESP + EDI + 024h], AL
				MOVSX EAX, AL
				MOV DWORD PTR SS : [ESP + 020h], EAX

				xiadan_00673D9D:

				MOV EAX, DWORD PTR SS : [ESP + 020h]
				CDQ
				IDIV ESI
				MOV EDX, DWORD PTR SS : [ESP + 038h]
				AND AL, 1
				MOV BYTE PTR DS : [EDX + EBP], AL
				MOV EAX, ESI
				CDQ
				SUB EAX, EDX
				INC EBP
				SAR EAX, 1
				DEC EBX
				MOV ESI, EAX
				JNZ xiadan_00673D9D
				INC EDI
				ADD ECX, 6
				CMP EDI, 8
				JL xiadan_00673D44
				POP EDI
				POP ESI
				POP EBP
				POP EBX
				ADD ESP, 020h
				RETN; <= Procedure End



	ASM_END
}


void  client_en_de_crypt(unsigned char* out_buff, unsigned char* src_buff, int32_t *len_ptr, unsigned char* key1, unsigned char* key2, int en_or_de)
{

	ASM_START
		push ebp
		push esp

		push en_or_de
		push key2
		push key1
		push len_ptr
		push src_buff
		push out_buff

		call xiadan_00672350

		add esp, 0x18

		pop esp
		pop ebp
	ASM_END

	return;

	ASM_START
	
				xiadan_00673060:; <= Procedure Start

					MOV EAX, DWORD PTR SS : [ESP + 0xC]
					PUSH EBX
					PUSH ESI
					MOV ESI, DWORD PTR SS : [ESP + 0xC]
					PUSH EDI
					MOV EDI, DWORD PTR SS : [ESP + 0x1C]
					LEA EBX, DWORD PTR DS : [ESI + 0x180]
					PUSH EAX
					PUSH EBX
					MOV DWORD PTR DS : [ESI + 0x190], EDI
					CALL xiadan_00673220
					MOV ECX, DWORD PTR DS : [EBX]
					MOV EDX, DWORD PTR DS : [ESI + 0x184]
					MOV EBX, DWORD PTR SS : [ESP + 0x1C]
					ADD ESP, 8
					TEST EDI, EDI
					MOV DWORD PTR DS : [ESI + 0x188], ECX
					MOV DWORD PTR DS : [ESI + 0x18C], EDX
					MOV EAX, EBX
					JNZ xiadan_006730A6
					LEA EAX, DWORD PTR DS : [EBX + 0x10]

				xiadan_006730A6 :

								PUSH EDI
								PUSH EAX
								PUSH ESI
								CALL xiadan_006732E0
								XOR EAX, EAX
								LEA ECX, DWORD PTR DS : [EBX + 8]
								TEST EDI, EDI
								SETE AL
								PUSH EAX
								LEA EDX, DWORD PTR DS : [ESI + 0x80]
								PUSH ECX
								PUSH EDX
								CALL xiadan_006732E0
								ADD ESP, 0x18
								TEST EDI, EDI
								JE xiadan_006730D0
								ADD EBX, 0x10

				xiadan_006730D0:

					PUSH EDI
						ADD ESI, 0x100
						PUSH EBX
						PUSH ESI
						CALL xiadan_006732E0
						ADD ESP, 0xC
						POP EDI
						POP ESI
						POP EBX
						RETN; <= Procedure End

						NOP
						NOP
						NOP
						NOP
						NOP
						NOP
						NOP
						NOP
						NOP
						NOP
						NOP

			xiadan_006730F0 : ; <= Procedure Start

						MOV EAX, DWORD PTR SS : [ESP + 0x10]
						SUB ESP, 0x10
						TEST AL, 7
						JE xiadan_00673102
						OR EAX, 0xFFFFFFFF
						ADD ESP, 0x10
						RETN

			xiadan_00673102 :

					SHR EAX, 3
						JE xiadan_00673216
						PUSH EBX
						MOV EBX, DWORD PTR SS : [ESP + 0x20]
						PUSH EBP
						PUSH ESI
						MOV ESI, DWORD PTR SS : [ESP + 0x20]
						PUSH EDI
						MOV EDI, DWORD PTR SS : [ESP + 0x28]
						MOV DWORD PTR SS : [ESP + 0x30], EAX
						LEA EBP, DWORD PTR DS : [ESI + 0x80]
						SUB EBX, EDI

			xiadan_00673127 :

					LEA EAX, DWORD PTR DS : [EBX + EDI]
						LEA ECX, DWORD PTR SS : [ESP + 0x18]
						PUSH EAX
						PUSH ECX
						CALL xiadan_00673220
						MOV EAX, DWORD PTR DS : [ESI + 0x190]
						ADD ESP, 8
						TEST EAX, EAX
						JE xiadan_00673164
						MOV EDX, DWORD PTR DS : [ESI + 0x180]
						MOV EAX, DWORD PTR SS : [ESP + 0x18]
						MOV ECX, DWORD PTR SS : [ESP + 0x1C]
						XOR EDX, EAX
						MOV EAX, DWORD PTR DS : [ESI + 0x184]
						MOV DWORD PTR SS : [ESP + 0x10], EDX
						XOR EAX, ECX
						MOV DWORD PTR SS : [ESP + 0x14], EAX
						JMP xiadan_00673174

			xiadan_00673164 :

					MOV ECX, DWORD PTR SS : [ESP + 0x18]
						MOV EDX, DWORD PTR SS : [ESP + 0x1C]
						MOV DWORD PTR SS : [ESP + 0x10], ECX
						MOV DWORD PTR SS : [ESP + 0x14], EDX

			xiadan_00673174 :

					LEA EAX, DWORD PTR SS : [ESP + 0x10]
						PUSH ESI
						PUSH EAX
						CALL xiadan_006734C0
						LEA ECX, DWORD PTR SS : [ESP + 0x18]
						PUSH EBP
						PUSH ECX
						CALL xiadan_006734C0
						LEA EAX, DWORD PTR DS : [ESI + 0x100]
						LEA EDX, DWORD PTR SS : [ESP + 0x20]
						PUSH EAX
						PUSH EDX
						CALL xiadan_006734C0
						MOV EAX, DWORD PTR DS : [ESI + 0x190]
						ADD ESP, 0x18
						TEST EAX, EAX
						JE xiadan_006731BE
						MOV EAX, DWORD PTR SS : [ESP + 0x10]
						MOV ECX, DWORD PTR SS : [ESP + 0x14]
						MOV DWORD PTR DS : [ESI + 0x180], EAX
						MOV DWORD PTR DS : [ESI + 0x184], ECX
						JMP xiadan_006731F2

			xiadan_006731BE :

					MOV EDX, DWORD PTR DS : [ESI + 0x180]
						MOV EAX, DWORD PTR SS : [ESP + 0x10]
						MOV ECX, DWORD PTR SS : [ESP + 0x14]
						XOR EAX, EDX
						MOV EDX, DWORD PTR SS : [ESP + 0x1C]
						MOV DWORD PTR SS : [ESP + 0x10], EAX
						MOV EAX, DWORD PTR DS : [ESI + 0x184]
						MOV DWORD PTR DS : [ESI + 0x184], EDX
						XOR ECX, EAX
						MOV DWORD PTR SS : [ESP + 0x14], ECX
						MOV ECX, DWORD PTR SS : [ESP + 0x18]
						MOV DWORD PTR DS : [ESI + 0x180], ECX

			xiadan_006731F2 :

					LEA EAX, DWORD PTR SS : [ESP + 0x10]
						PUSH EAX
						PUSH EDI
						CALL xiadan_00673290
						MOV EAX, DWORD PTR SS : [ESP + 0x38]
						ADD ESP, 8
						ADD EDI, 8
						DEC EAX
						MOV DWORD PTR SS : [ESP + 0x30], EAX
						JNZ xiadan_00673127
						POP EDI
						POP ESI
						POP EBP
						POP EBX

			xiadan_00673216 :

					XOR EAX, EAX
						ADD ESP, 0x10
						RETN; <= Procedure End

						NOP
						NOP
						NOP
						NOP

			xiadan_00673220 : ; <= Procedure Start

						MOV ECX, DWORD PTR SS : [ESP + 8]
						XOR EAX, EAX
						PUSH ESI
						MOV AL, BYTE PTR DS : [ECX]
						MOV EDX, EAX
						MOV EAX, DWORD PTR SS : [ESP + 8]
						SHL EDX, 0x18
						MOV DWORD PTR DS : [EAX], EDX
						MOV ESI, DWORD PTR DS : [EAX]
						INC ECX
						XOR EDX, EDX
						ADD EAX, 4
						MOV DL, BYTE PTR DS : [ECX]
						SHL EDX, 0x10
						OR ESI, EDX
						INC ECX
						XOR EDX, EDX
						MOV DWORD PTR DS : [EAX - 4], ESI
						MOV DH, BYTE PTR DS : [ECX]
						OR ESI, EDX
						INC ECX
						XOR EDX, EDX
						MOV DWORD PTR DS : [EAX - 4], ESI
						MOV DL, BYTE PTR DS : [ECX]
						OR ESI, EDX
						INC ECX
						XOR EDX, EDX
						MOV DWORD PTR DS : [EAX - 4], ESI
						MOV DL, BYTE PTR DS : [ECX]
						SHL EDX, 0x18
						MOV DWORD PTR DS : [EAX], EDX
						MOV ESI, DWORD PTR DS : [EAX]
						INC ECX
						XOR EDX, EDX
						MOV DL, BYTE PTR DS : [ECX]
						SHL EDX, 0x10
						OR ESI, EDX
						INC ECX
						XOR EDX, EDX
						MOV DWORD PTR DS : [EAX], ESI
						MOV DH, BYTE PTR DS : [ECX]
						OR ESI, EDX
						XOR EDX, EDX
						MOV DWORD PTR DS : [EAX], ESI
						MOV DL, BYTE PTR DS : [ECX + 1]
						OR EDX, ESI
						POP ESI
						MOV DWORD PTR DS : [EAX], EDX
						RETN; <= Procedure End

						NOP
						NOP
						NOP
						NOP
						NOP
						NOP
						NOP
						NOP
						NOP
						NOP

				xiadan_00673290 : ; <= Procedure Start

						MOV ECX, DWORD PTR SS : [ESP + 8]
						MOV EAX, DWORD PTR SS : [ESP + 4]
						MOV EDX, DWORD PTR DS : [ECX]
						ADD ECX, 4
						SHR EDX, 0x18
						MOV BYTE PTR DS : [EAX], DL
						MOV EDX, DWORD PTR DS : [ECX - 4]
						INC EAX
						SHR EDX, 0x10
						MOV BYTE PTR DS : [EAX], DL
						MOV EDX, DWORD PTR DS : [ECX - 4]
						INC EAX
						SHR EDX, 8
						MOV BYTE PTR DS : [EAX], DL
						MOV DL, BYTE PTR DS : [ECX - 4]
						INC EAX
						MOV BYTE PTR DS : [EAX], DL
						MOV EDX, DWORD PTR DS : [ECX]
						INC EAX
						SHR EDX, 0x18
						MOV BYTE PTR DS : [EAX], DL
						MOV EDX, DWORD PTR DS : [ECX]
						INC EAX
						SHR EDX, 0x10
						MOV BYTE PTR DS : [EAX], DL
						MOV EDX, DWORD PTR DS : [ECX]
						INC EAX
						SHR EDX, 8
						MOV BYTE PTR DS : [EAX], DL
						MOV CL, BYTE PTR DS : [ECX]
						MOV BYTE PTR DS : [EAX + 1], CL
						RETN; <= Procedure End

						NOP
						NOP
						NOP
						NOP
						NOP
						NOP
						NOP
						NOP


			xiadan_006732E0 : ; <= Procedure Start

						SUB ESP, 0xF0
						XOR ECX, ECX
						PUSH EBX
						PUSH EBP
						PUSH ESI
						MOV ESI, DWORD PTR SS : [ESP + 0x104]
						PUSH EDI

			xiadan_006732F3 :

					XOR EAX, EAX
						MOV AL, BYTE PTR DS : byte_86B528[ECX]
						MOV EDX, EAX
						AND EAX, 7
						SAR EDX, 3
						MOV BL, BYTE PTR DS : byte_86B4B8[EAX * 2]
						MOV DL, BYTE PTR DS : [EDX + ESI]
						TEST BL, DL
						SETNE AL
						MOV BYTE PTR SS : [ESP + ECX + 0x48], AL
						INC ECX
						CMP ECX, 0x38
						JL xiadan_006732F3
						XOR EDX, EDX

			xiadan_0067331E :

					LEA EAX, DWORD PTR DS : [EDX + EDX]
						LEA EDI, DWORD PTR SS : [ESP + EAX * 4 + 0x84]
						LEA EBP, DWORD PTR SS : [ESP + EAX * 4 + 0x80]
						XOR EAX, EAX
						XOR ECX, ECX
						MOV CL, BYTE PTR DS : byte_86B560[EDX]
						MOV DWORD PTR DS : [EDI], 0
						MOV DWORD PTR SS : [EBP], 0
						MOV ESI, ECX

			xiadan_00673348 :

					CMP ECX, 0x1C
						JGE xiadan_00673353
						MOV BL, BYTE PTR SS : [ESP + ECX + 0x48]
						JMP xiadan_00673357

			xiadan_00673353 :

					MOV BL, BYTE PTR SS : [ESP + ECX + 0x2C]

			xiadan_00673357 :

						MOV BYTE PTR SS : [ESP + EAX + 0x10], BL
						INC EAX
						INC ECX
						CMP EAX, 0x1C
						JL xiadan_00673348
						MOV EAX, 0x1C
						LEA ECX, DWORD PTR DS : [ESI + 0x1C]

			xiadan_0067336A :

						CMP ECX, 0x38
						JGE xiadan_00673375
						MOV BL, BYTE PTR SS : [ESP + ECX + 0x48]
						JMP xiadan_00673379

						xiadan_00673375 :

					MOV BL, BYTE PTR SS : [ESP + ECX + 0x2C]

			xiadan_00673379 :

						MOV BYTE PTR SS : [ESP + EAX + 0x10], BL
						INC EAX
						INC ECX
						CMP EAX, 0x38
						JL xiadan_0067336A
						XOR ECX, ECX
						MOV EAX, OFFSET byte_86B4C8

			xiadan_0067338B :

					XOR EBX, EBX
						MOV BL, BYTE PTR DS : byte_86B570[ECX]
						CMP BYTE PTR SS : [ESP + EBX + 0x10], 0
						JE xiadan_006733A4
						MOV ESI, DWORD PTR DS : [EAX]
						MOV EBX, DWORD PTR SS : [EBP]
						OR EBX, ESI
						MOV DWORD PTR SS : [EBP], EBX

			xiadan_006733A4 :

					XOR EBX, EBX
						MOV BL, BYTE PTR DS : byte_86B588[ECX]
						CMP BYTE PTR SS : [ESP + EBX + 0x10], 0
						JE xiadan_006733BB
						MOV ESI, DWORD PTR DS : [EAX]
						MOV EBX, DWORD PTR DS : [EDI]
						OR EBX, ESI
						MOV DWORD PTR DS : [EDI], EBX

			xiadan_006733BB :

					ADD EAX, 4
						INC ECX
						CMP EAX, OFFSET byte_86B528
						JL xiadan_0067338B
						INC EDX
						CMP EDX, 0x10
						JL xiadan_0067331E
						MOV EDX, DWORD PTR SS : [ESP + 0x10C]
						MOV ECX, DWORD PTR SS : [ESP + 0x104]
						LEA EAX, DWORD PTR SS : [ESP + 0x80]
						PUSH EDX
						PUSH EAX
						PUSH ECX
						CALL xiadan_00673400
						ADD ESP, 0xC
						POP EDI
						POP ESI
						POP EBP
						POP EBX
						ADD ESP, 0xF0
						RETN; <= Procedure End


			xiadan_00673400 : ; <= Procedure Start

						MOV ECX, DWORD PTR SS : [ESP + 0xC]
						MOV EAX, DWORD PTR SS : [ESP + 4]
						PUSH EBX
						PUSH EBP
						PUSH ESI
						MOV ESI, DWORD PTR SS : [ESP + 0x14]
						TEST ECX, ECX
						PUSH EDI
						JNZ xiadan_00673417
						ADD EAX, 0x78

						xiadan_00673417 :

						NEG ECX
						SBB ECX, ECX
						MOV EBX, 0x10
						AND ECX, 4
						ADD ECX, -3
						LEA EBP, DWORD PTR DS : [ECX * 4]

						xiadan_0067342D :

						MOV EDI, ESI
						ADD ESI, 4
						ADD EAX, 4
						ADD ESI, 4
						MOV EDX, DWORD PTR DS : [EDI]
						AND EDX, 0xFC0000
						SHL EDX, 6
						MOV DWORD PTR DS : [EAX - 4], EDX
						MOV ECX, DWORD PTR DS : [EDI]
						AND ECX, 0xFC0
						SHL ECX, 0xA
						OR ECX, EDX
						MOV DWORD PTR DS : [EAX - 4], ECX
						MOV EDX, DWORD PTR DS : [ESI - 4]
						SHR EDX, 0xA
						AND EDX, 0x3F00
						OR EDX, ECX
						MOV DWORD PTR DS : [EAX - 4], EDX
						MOV ECX, DWORD PTR DS : [ESI - 4]
						SHR ECX, 6
						AND ECX, 0x3F
						OR ECX, EDX
						MOV DWORD PTR DS : [EAX - 4], ECX
						MOV EDX, DWORD PTR DS : [EDI]
						AND EDX, 0x3F000
						SHL EDX, 0xC
						MOV DWORD PTR DS : [EAX], EDX
						MOV ECX, DWORD PTR DS : [EDI]
						AND ECX, 0x3F
						SHL ECX, 0x10
						OR ECX, EDX
						MOV DWORD PTR DS : [EAX], ECX
						MOV EDX, DWORD PTR DS : [ESI - 4]
						SHR EDX, 4
						AND EDX, 0x3F00
						OR EDX, ECX
						MOV DWORD PTR DS : [EAX], EDX
						MOV ECX, DWORD PTR DS : [ESI - 4]
						AND ECX, 0x3F
						OR ECX, EDX
						MOV DWORD PTR DS : [EAX], ECX
						ADD EAX, EBP
						DEC EBX
						JNZ xiadan_0067342D
						POP EDI
						POP ESI
						POP EBP
						POP EBX
						RETN; <= Procedure End

						NOP
						NOP
						NOP
						NOP
						NOP
						NOP
						NOP
						NOP
						NOP
						NOP
						NOP
						NOP
						NOP
						NOP

			xiadan_006734C0 : ; <= Procedure Start

						PUSH ECX
						MOV ECX, DWORD PTR SS : [ESP + 8]
						PUSH EBX
						PUSH EBP
						PUSH ESI
						MOV EAX, DWORD PTR DS : [ECX]
						MOV EDX, DWORD PTR DS : [ECX + 4]
						MOV ECX, EAX
						MOV ESI, EDX
						SHR ECX, 4
						AND ECX, 0xF0F0F0F
						AND ESI, 0xF0F0F0F
						XOR ECX, ESI
						PUSH EDI
						XOR EDX, ECX
						MOV DWORD PTR SS : [ESP + 0x10], 8
						SHL ECX, 4
						XOR EAX, ECX
						MOV ESI, EDX
						MOV ECX, EAX
						AND ESI, 0xFFFF
						SHR ECX, 0x10
						XOR ECX, ESI
						XOR EDX, ECX
						SHL ECX, 0x10
						XOR EAX, ECX
						MOV ECX, EDX
						SHR ECX, 2
						MOV ESI, EAX
						AND ECX, 0x33333333
						AND ESI, 0x33333333
						XOR ECX, ESI
						XOR EAX, ECX
						SHL ECX, 2
						XOR EDX, ECX
						MOV ESI, EAX
						MOV ECX, EDX
						AND ESI, 0xFF00FF
						SHR ECX, 8
						AND ECX, 0xFF00FF
						XOR ECX, ESI
						MOV ESI, DWORD PTR SS : [ESP + 0x1C]
						XOR EAX, ECX
						SHL ECX, 8
						XOR EDX, ECX
						MOV ECX, EDX
						ADD EDX, EDX
						SHR ECX, 0x1F
						OR ECX, EDX
						MOV EDX, ECX
						XOR EDX, EAX
						AND EDX, 0xAAAAAAAA
						XOR EAX, EDX
						XOR ECX, EDX
						MOV EDX, EAX
						ADD EAX, EAX
						SHR EDX, 0x1F
						OR EDX, EAX

			xiadan_00673564 :

					MOV EBX, DWORD PTR DS : [ESI]
						MOV EAX, ECX
						MOV EDI, ECX
						ADD ESI, 4
						SHL EAX, 0x1C
						SHR EDI, 4
						OR EAX, EDI
						ADD ESI, 4
						XOR EAX, EBX
						ADD ESI, 4
						MOV EBX, EAX
						MOV EDI, EAX
						SHR EBX, 0x10
						AND EBX, 0x3F
						ADD ESI, 4
						SHR EDI, 0x18
						MOV EBP, DWORD PTR DS : byte_86B7A0[EBX * 4]
						MOV EBX, EAX
						AND EDI, 0x3F
						AND EAX, 0x3F
						SHR EBX, 8
						MOV EDI, DWORD PTR DS : byte_86B5A0[EDI * 4]
						AND EBX, 0x3F
						OR EDI, EBP
						MOV EBP, DWORD PTR DS : byte_86B9A0[EBX * 4]
						MOV EBX, DWORD PTR DS : byte_86BBA0[EAX * 4]
						MOV EAX, DWORD PTR DS : [ESI - 0xC]
						OR EDI, EBP
						XOR EAX, ECX
						OR EDI, EBX
						MOV EBX, EAX
						MOV EBP, EAX
						SHR EBX, 0x18
						AND EBX, 0x3F
						SHR EBP, 0x10
						MOV EBX, DWORD PTR DS : byte_86B6A0[EBX * 4]
						AND EBP, 0x3F
						OR EBX, DWORD PTR DS : byte_86B8A0[EBP * 4]
						MOV EBP, EAX
						SHR EBP, 8
						AND EBP, 0x3F
						AND EAX, 0x3F
						OR EBX, DWORD PTR DS : byte_86BAA0[EBP * 4]
						MOV EBP, DWORD PTR DS : byte_86BCA0[EAX * 4]
						OR EBX, EBP
						OR EBX, EDI
						XOR EDX, EBX
						MOV EBX, DWORD PTR DS : [ESI - 8]
						MOV EAX, EDX
						MOV EDI, EDX
						SHL EAX, 0x1C
						SHR EDI, 4
						OR EAX, EDI
						XOR EAX, EBX
						MOV EBX, EAX
						MOV EDI, EAX
						SHR EBX, 0x10
						AND EBX, 0x3F
						SHR EDI, 0x18
						MOV EBP, DWORD PTR DS : byte_86B7A0[EBX * 4]
						MOV EBX, EAX
						AND EDI, 0x3F
						AND EAX, 0x3F
						SHR EBX, 8
						MOV EDI, DWORD PTR DS : byte_86B5A0[EDI * 4]
						AND EBX, 0x3F
						OR EDI, EBP
						MOV EBP, DWORD PTR DS : byte_86B9A0[EBX * 4]
						MOV EBX, DWORD PTR DS : byte_86BBA0[EAX * 4]
						MOV EAX, DWORD PTR DS : [ESI - 4]
						OR EDI, EBP
						XOR EAX, EDX
						OR EDI, EBX
						MOV EBX, EAX
						MOV EBP, EAX
						SHR EBX, 0x18
						AND EBX, 0x3F
						SHR EBP, 0x10
						MOV EBX, DWORD PTR DS : byte_86B6A0[EBX * 4]
						AND EBP, 0x3F
						OR EBX, DWORD PTR DS : byte_86B8A0[EBP * 4]
						MOV EBP, EAX
						AND EAX, 0x3F
						SHR EBP, 8
						AND EBP, 0x3F
						OR EBX, DWORD PTR DS : byte_86BAA0[EBP * 4]
						MOV EBP, DWORD PTR DS : byte_86BCA0[EAX * 4]
						MOV EAX, DWORD PTR SS : [ESP + 0x10]
						OR EBX, EBP
						OR EBX, EDI
						XOR ECX, EBX
						DEC EAX
						MOV DWORD PTR SS : [ESP + 0x10], EAX
						JNZ xiadan_00673564
						MOV EAX, ECX
						POP EDI
						SHL EAX, 0x1F
						SHR ECX, 1
						OR EAX, ECX
						MOV ECX, EAX
						XOR ECX, EDX
						AND ECX, 0xAAAAAAAA
						XOR EDX, ECX
						XOR EAX, ECX
						MOV ECX, EDX
						MOV ESI, EAX
						SHL ECX, 0x1F
						SHR EDX, 1
						OR ECX, EDX
						AND ESI, 0xFF00FF
						MOV EDX, ECX
						SHR EDX, 8
						AND EDX, 0xFF00FF
						XOR EDX, ESI
						XOR EAX, EDX
						SHL EDX, 8
						XOR ECX, EDX
						MOV ESI, EAX
						MOV EDX, ECX
						AND ESI, 0x33333333
						SHR EDX, 2
						AND EDX, 0x33333333
						XOR EDX, ESI
						XOR EAX, EDX
						SHL EDX, 2
						XOR ECX, EDX
						MOV EDX, EAX
						MOV ESI, ECX
						SHR EDX, 0x10
						AND ESI, 0xFFFF
						XOR EDX, ESI
						XOR ECX, EDX
						SHL EDX, 0x10
						XOR EAX, EDX
						MOV ESI, ECX
						MOV EDX, EAX
						AND ESI, 0xF0F0F0F
						SHR EDX, 4
						AND EDX, 0xF0F0F0F
						XOR EDX, ESI
						MOV ESI, EDX
						SHL ESI, 4
						XOR ESI, EAX
						MOV EAX, DWORD PTR SS : [ESP + 0x14]
						XOR EDX, ECX
						MOV DWORD PTR DS : [EAX], ESI
						POP ESI
						POP EBP
						MOV DWORD PTR DS : [EAX + 4], EDX
						POP EBX
						POP ECX
						RETN; <= Procedure End

						NOP
						NOP
						NOP
						NOP
						NOP
						NOP
						NOP

			xiadan_00673740 : ; <= Procedure Start

						MOV EAX, DWORD PTR SS : [ESP + 0x18]
						MOV ECX, DWORD PTR SS : [ESP + 0x14]
						MOV EDX, DWORD PTR SS : [ESP + 0x10]
						SUB ESP, 0x194
						PUSH EAX
						PUSH ECX
						LEA EAX, DWORD PTR SS : [ESP + 8]
						PUSH EDX
						PUSH EAX
						CALL xiadan_00673060
						MOV ECX, DWORD PTR SS : [ESP + 0x1B0]
						MOV EDX, DWORD PTR SS : [ESP + 0x1AC]
						MOV EAX, DWORD PTR SS : [ESP + 0x1A8]
						PUSH ECX
						PUSH EDX
						LEA ECX, DWORD PTR SS : [ESP + 0x18]
						PUSH EAX
						PUSH ECX
						CALL xiadan_006730F0
						ADD ESP, 0x1B4
						RETN; <= Procedure End

		xiadan_00672350 : ; <= Procedure Start

							MOV EDX, DWORD PTR SS : [ESP + 0x18]
							MOV ECX, DWORD PTR SS : [ESP + 0x14]
							XOR EAX, EAX
							TEST EDX, EDX
							MOV EDX, DWORD PTR SS : [ESP + 0x10]
							SETE AL
							PUSH EAX
							MOV EAX, DWORD PTR SS : [ESP + 0x10]
							PUSH ECX
							PUSH EDX
							MOV ECX, DWORD PTR DS : [EAX]
							MOV EDX, DWORD PTR SS : [ESP + 0x14]
							MOV EAX, DWORD PTR SS : [ESP + 0x10]
							PUSH ECX
							PUSH EDX
							PUSH EAX
							CALL xiadan_00673740
							ADD ESP, 0x18
							RETN; <= Procedure End
	ASM_END
}

/*

int main(int argc, const char * argv[]) {
    unsigned char source[] = {
		0x78, 0x9C, 0x9D, 0x51, 0x4B, 0x48, 0x15, 0x51, 0x18, 0x1E,
		0x8B, 0x1E, 0x1C, 0x17, 0x45, 0xD0, 0x2A, 0xC2, 0x8B, 0x04,
		0x69, 0x39, 0xE3, 0x79, 0xCC, 0x53, 0x39, 0xE1, 0x78, 0xEF,
		0x9D, 0xBC, 0x0B, 0xCD, 0x2C, 0xC3, 0x20, 0x99, 0xE6, 0x9E,
		0x99, 0xBC, 0x63, 0x77, 0x1E, 0xCC, 0xCC, 0x4D, 0x2D, 0xA1,
		0xC0, 0xA0, 0xAD, 0x52, 0xD0, 0xAE, 0x95, 0x92, 0x18, 0x44,
		0xD1, 0x22, 0x42, 0xA2, 0x17, 0x71, 0x6B, 0x1B, 0xF4, 0x72,
		0x91, 0xD0, 0x42, 0x5A, 0x58, 0x50, 0x8B, 0x76, 0x3D, 0xE6,
		0xDE, 0x04, 0xA5, 0x4D, 0xD0, 0xBF, 0x38, 0x9C, 0xFF, 0xFC,
		0xDF, 0xF9, 0xBF, 0xEF, 0xFB, 0xFF, 0x1F, 0xBF, 0x9E, 0x5C,
		0x90, 0x39, 0x6E, 0xA7, 0xF1, 0x71, 0x69, 0x60, 0xF1, 0xC1,
		0x42, 0x53, 0x58, 0xC5, 0xFB, 0x76, 0x0F, 0xCF, 0xEF, 0x0D,
		0x9A, 0x4F, 0x9C, 0xFD, 0xF2, 0x79, 0xF9, 0xF2, 0xCC, 0xFB,
		0xB7, 0xB7, 0xB7, 0x3D, 0x2B, 0xEF, 0x9A, 0x39, 0xFA, 0x72,
		0x78, 0xB5, 0xC1, 0x35, 0xD4, 0x2B, 0xD3, 0xDE, 0xD7, 0x47,
		0x8B, 0x9F, 0x1A, 0x1F, 0x9F, 0xDE, 0x3F, 0x3F, 0x7C, 0x6F,
		0x72, 0x6C, 0xF2, 0xE7, 0xD3, 0xEA, 0xAB, 0xE5, 0xD5, 0x6B,
		0x5B, 0x2E, 0xDE, 0x5D, 0xD4, 0x0F, 0xCE, 0x96, 0x94, 0x5B,
		0x4D, 0x53, 0x93, 0x37, 0xF2, 0x8D, 0xDA, 0xBB, 0x43, 0x3B,
		0x66, 0xC9, 0xEB, 0xEF, 0x7B, 0x6E, 0x7E, 0x4B, 0x5E, 0x2C,
		0x3D, 0x04, 0x73, 0x86, 0x32, 0xF1, 0x7C, 0xFA, 0xCE, 0x28,
		0x5D, 0x28, 0x54, 0xAF, 0xAE, 0x58, 0x73, 0xD7, 0x3F, 0x34,
		0x9D, 0x8A, 0xB7, 0x9E, 0xB4, 0xDE, 0x34, 0x4F, 0xDD, 0x5F,
		0xAE, 0x6E, 0x5F, 0xD9, 0x4C, 0x1A, 0x36, 0x71, 0x1C, 0x27,
		0xA7, 0x01, 0xA1, 0x04, 0x45, 0x91, 0x90, 0x34, 0xE5, 0x14,
		0xAC, 0x12, 0xAC, 0x71, 0xFF, 0x13, 0xB9, 0xFE, 0x7F, 0x42,
		0x08, 0x97, 0x87, 0xB2, 0x24, 0x20, 0x55, 0x90, 0x10, 0x47,
		0x36, 0x14, 0x1A, 0xBA, 0xC2, 0x4B, 0x7F, 0x83, 0xFB, 0x72,
		0x14, 0x09, 0x10, 0xD8, 0x4E, 0x98, 0xB8, 0x36, 0x05, 0x25,
		0xDB, 0x76, 0xFD, 0x33, 0x01, 0x05, 0xAC, 0xEC, 0x3A, 0x7E,
		0x72, 0xCE, 0x89, 0xE8, 0x7A, 0x33, 0xC0, 0xC2, 0x4A, 0xBD,
		0x5A, 0xF0, 0x13, 0xA7, 0xDC, 0x32, 0xD0, 0x9A, 0xC9, 0x06,
		0x91, 0xD3, 0x72, 0xBC, 0xB7, 0x35, 0xE3, 0x4A, 0xBC, 0x48,
		0xA0, 0x3A, 0x98, 0xC9, 0xF6, 0x0F, 0x66, 0xBA, 0x32, 0x58,
		0x50, 0xE1, 0xE1, 0x9E, 0xF3, 0x07, 0x30, 0x60, 0xD1, 0x44,
		0x98, 0x98, 0xBE, 0xE5, 0x39, 0xB4, 0x27, 0x3F, 0x54, 0xE8,
		0x03, 0xF6, 0x84, 0x1F, 0xD7, 0x98, 0x98, 0x19, 0x57, 0xC2,
		0x30, 0x88, 0x12, 0x8A, 0x36, 0xC4, 0x3A, 0x2F, 0xA6, 0x20,
		0x4C, 0x46, 0x42, 0x33, 0x4E, 0xCF, 0x91, 0x84, 0x42, 0xE0,
		0x59, 0xAC, 0x4E, 0x2E, 0x33, 0x5E, 0x84, 0x3C, 0x54, 0x79,
		0x4B, 0xE4, 0x65, 0x91, 0x2F, 0x16, 0x3B, 0x61, 0x9A, 0x32,
		0x1E, 0x6B, 0xBC, 0x8A, 0x79, 0x8C, 0xD2, 0x7B, 0x27, 0x48,
		0x1B, 0xD4, 0xC1, 0xA5, 0x24, 0x66, 0x50, 0xFC, 0xA3, 0x5F,
		0x04, 0xA5, 0xF1, 0x8A, 0x6B, 0xD6, 0x3C, 0x91, 0xD4, 0x72,
		0x58, 0x29, 0x96, 0x5D, 0xE6, 0x86, 0xA9, 0x69, 0x2B, 0xB2,
		0xC7, 0xAC, 0xC8, 0x61, 0x81, 0xED, 0xD0, 0xEE, 0xC2, 0x91,
		0x63, 0x1D, 0x28, 0x07, 0xA1, 0x2C, 0x12, 0x4D, 0xD2, 0x0D,
		0x92, 0x55, 0x44, 0xC9, 0x90, 0xB3, 0x04, 0x69, 0x62, 0x5E,
		0xC3, 0x44, 0x21, 0x39, 0x45, 0x6F, 0xEB, 0xC9, 0xE5, 0x3A,
		0xF2, 0x3A, 0xC2, 0x9A, 0x44, 0xD2, 0x55, 0xE6, 0x35, 0x51,
		0x27, 0x3A, 0x42, 0xA2, 0x2C, 0x42, 0xC3, 0xC0, 0xBA, 0x96,
		0xFE, 0x91, 0x8D, 0xB6, 0x5E, 0x3D, 0xDB, 0x21, 0x67, 0xD7,
		0xD4, 0xEA, 0x75, 0xB5, 0xDD, 0xDD, 0xC0, 0x73, 0xFC, 0x4A,
		0x3A, 0x00, 0x08, 0x62, 0x66, 0x7B, 0x35, 0x5F, 0x69, 0x5E,
		0x17, 0x85, 0x21, 0x82, 0x50, 0x81, 0xD2, 0xDA, 0x0C, 0xA8,
		0x33, 0xEE, 0x80, 0x51, 0xDB, 0xF3, 0x28, 0x02, 0xB1, 0x13,
		0xD5, 0x1C, 0x85, 0x74, 0x2C, 0x11, 0x6A, 0x96, 0x04, 0x16,
		0x78, 0x02, 0xF3, 0x41, 0x39, 0x60, 0x56, 0x39, 0x7D, 0x46,
		0x1A, 0x36, 0x91, 0xAC, 0x9A, 0xC4, 0xC4, 0x1A, 0x28, 0xBA,
		0x41, 0x6C, 0xDA, 0x56, 0xE2, 0x50, 0xA8, 0xB4, 0x43, 0xDC,
		0x9E, 0xF6, 0x95, 0x40, 0x7D, 0xD9, 0xBF, 0x01, 0xF5, 0xF6,
		0xDC, 0x37, 0x33, 0x41, 0x31, 0x31, 0x34, 0x36, 0x34, 0x30,
		0x46, 0x46, 0x32, 0x41
    };
    
    int32_t len = 0x268;
    
    
    
    unsigned char key1[] =  {0xB6, 0x80, 0x80, 0x80, 0x86, 0x80, 0x85, 0x85, 0x0, 0x0, 0x0 ,0x0, 0x0, 0x0, 0x0, 0x0,    0x0, 0x0, 0x0 ,0x0, 0x0, 0x0, 0x0, 0x0 };
    unsigned char key2[] = { 0xA2, 0xF7, 0x6F, 0x50, 0xBC, 0x7F, 0x97, 0xDD };
    
    
    en_de_crypt(source, source, &len, key1, key2, 0);
    
    return 0;
}
 
 */

void gen_key2(unsigned char *src, int32_t len, unsigned char *dst, int32_t *len_ptr, unsigned char *src2)
{
	
	void *p_len = len_ptr;
	void *p_src2 = src2;
	void *p_out = dst;
	void *p_src1 = src;

	ASM_START
		pushad

		push p_src2
		push p_len
		push p_out
		push len
		push p_src1
		call xiadan_6722F0
		add esp, 14h

		popad

	ASM_END

	return;

	ASM_START
	xiadan_6722F0:; <= Procedure Start

				  MOV EAX, DWORD PTR SS : [ESP + 0x14]
				  MOV ECX, DWORD PTR SS : [ESP + 8]
				  MOV EDX, DWORD PTR SS : [ESP + 4]
				  PUSH EAX
				  MOV EAX, DWORD PTR SS : [ESP + 0x14]
				  PUSH ECX
				  MOV ECX, DWORD PTR SS : [ESP + 0x14]
				  PUSH EDX
				  PUSH EAX
				  PUSH ECX
				  CALL xiadan_00672A90
				  ADD ESP, 0x14
				  NEG EAX
				  SBB EAX, EAX
				  INC EAX
				  RET; <= Procedure End

				  NOP
				  NOP
				  NOP
				  NOP
				  NOP
				  NOP
				  NOP
				  NOP
				  NOP



				  xiadan_00672A90 : ; <= Procedure Start

									MOV ECX, DWORD PTR SS : [ESP + 0x14]
									XOR EAX, EAX
									SUB ESP, 0x104
									MOV AX, WORD PTR DS : [ECX]
									ADD EAX, 7
									PUSH ESI
									CDQ
									AND EDX, 7
									ADD EAX, EDX
									MOV ESI, EAX
									MOV EAX, DWORD PTR SS : [ESP + 0x118]
									SAR ESI, 3
									CMP EAX, ESI
									JBE xiadan_00672AC6
									MOV EAX, 0x406
									POP ESI
									ADD ESP, 0x104
									RET

									xiadan_00672AC6 :

				  PUSH ECX
					  PUSH EAX
					  MOV EAX, DWORD PTR SS : [ESP + 0x11C]
					  LEA ECX, DWORD PTR SS : [ESP + 0xC]
					  PUSH EAX
					  LEA EDX, DWORD PTR SS : [ESP + 0x14]
					  PUSH ECX
					  PUSH EDX
					  CALL xiadan_00672CB0
					  ADD ESP, 0x14
					  TEST EAX, EAX
					  JNZ xiadan_00672B75
					  CMP DWORD PTR SS : [ESP + 4], ESI
					  JE xiadan_00672AFD
					  MOV EAX, 0x406
					  POP ESI
					  ADD ESP, 0x104
					  RET

					  xiadan_00672AFD :

				  MOV AL, BYTE PTR SS : [ESP + 8]
					  TEST AL, AL
					  JNZ xiadan_00672B70
					  MOV CL, BYTE PTR SS : [ESP + 9]
					  MOV EAX, 2
					  CMP CL, AL
					  JNZ xiadan_00672B70
					  LEA ECX, DWORD PTR DS : [ESI - 1]
					  CMP ECX, EAX
					  JBE xiadan_00672B26

					  xiadan_00672B19 :

				  MOV DL, BYTE PTR SS : [ESP + EAX + 8]
					  TEST DL, DL
					  JE xiadan_00672B26
					  INC EAX
					  CMP EAX, ECX
					  JB xiadan_00672B19

					  xiadan_00672B26 :

				  INC EAX
					  CMP EAX, ESI
					  JNB xiadan_00672B70
					  MOV EDX, DWORD PTR SS : [ESP + 0x110]
					  MOV ECX, ESI
					  SUB ECX, EAX
					  MOV DWORD PTR DS : [EDX], ECX
					  LEA EDX, DWORD PTR DS : [ECX + 0xB]
					  CMP EDX, ESI
					  JA xiadan_00672B70
					  PUSH ECX
					  MOV ECX, DWORD PTR SS : [ESP + 0x110]
					  LEA EAX, DWORD PTR SS : [ESP + EAX + 0xC]
					  PUSH EAX
					  PUSH ECX
					  CALL xiadan_0067F950
					  PUSH 0x100
					  LEA EDX, DWORD PTR SS : [ESP + 0x18]
					  PUSH 0
					  PUSH EDX
					  CALL xiadan_0067F920
					  ADD ESP, 0x18
					  XOR EAX, EAX
					  POP ESI
					  ADD ESP, 0x104
					  RET

					  xiadan_00672B70 :

				  MOV EAX, 0x401

					  xiadan_00672B75 :

					  POP ESI
					  ADD ESP, 0x104
					  RET; <= Procedure End

					  NOP
					  NOP
					  NOP



					  xiadan_00672CB0 : ; <= Procedure Start

					  MOV EAX, DWORD PTR SS : [ESP + 0x10]
					  MOV ECX, DWORD PTR SS : [ESP + 0xC]
					  SUB ESP, 0xC30
					  LEA EDX, DWORD PTR SS : [ESP + 0x30C]
					  PUSH EBX
					  PUSH EBP
					  PUSH ESI
					  PUSH EDI
					  PUSH EAX
					  PUSH ECX
					  PUSH 0x41
					  PUSH EDX
					  CALL xiadan_006748B0
					  MOV EDI, DWORD PTR SS : [ESP + 0xC64]
					  PUSH 0x100
					  LEA ECX, DWORD PTR SS : [ESP + 0xA4C]
					  LEA EAX, DWORD PTR DS : [EDI + 2]
					  PUSH EAX
					  PUSH 0x41
					  PUSH ECX
					  CALL xiadan_006748B0
					  LEA EDX, DWORD PTR DS : [EDI + 0x302]
					  PUSH 0x80
					  PUSH EDX
					  LEA EAX, DWORD PTR SS : [ESP + 0x240]
					  PUSH 0x41
					  PUSH EAX
					  CALL xiadan_006748B0
					  LEA ECX, DWORD PTR DS : [EDI + 0x382]
					  PUSH 0x80
					  PUSH ECX
					  LEA EDX, DWORD PTR SS : [ESP + 0x458]
					  PUSH 0x41
					  PUSH EDX
					  CALL xiadan_006748B0
					  ADD ESP, 0x40
					  LEA EAX, DWORD PTR DS : [EDI + 0x402]
					  LEA ECX, DWORD PTR SS : [ESP + 0x72C]
					  PUSH 0x80
					  PUSH EAX
					  PUSH 0x41
					  PUSH ECX
					  CALL xiadan_006748B0
					  LEA EDX, DWORD PTR DS : [EDI + 0x482]
					  PUSH 0x80
					  PUSH EDX
					  LEA EAX, DWORD PTR SS : [ESP + 0x94C]
					  PUSH 0x41
					  PUSH EAX
					  CALL xiadan_006748B0
					  LEA ECX, DWORD PTR DS : [EDI + 0x502]
					  PUSH 0x80
					  PUSH ECX
					  LEA EDX, DWORD PTR SS : [ESP + 0xB64]
					  PUSH 0x41
					  PUSH EDX
					  CALL xiadan_006748B0
					  LEA EAX, DWORD PTR SS : [ESP + 0x34C]
					  PUSH 0x41
					  PUSH EAX
					  CALL xiadan_0067E6A0
					  LEA ECX, DWORD PTR SS : [ESP + 0xA70]
					  PUSH 0x41
					  PUSH ECX
					  MOV EBP, EAX
					  CALL xiadan_0067E6A0
					  ADD ESP, 0x40
					  LEA EDX, DWORD PTR SS : [ESP + 0x218]
					  MOV EBX, EAX
					  PUSH 0x41
					  PUSH EDX
					  CALL xiadan_0067E6A0
					  MOV ESI, EAX
					  LEA EAX, DWORD PTR SS : [ESP + 0xA40]
					  PUSH EBX
					  LEA ECX, DWORD PTR SS : [ESP + 0x328]
					  PUSH EAX
					  PUSH ECX
					  CALL xiadan_00674D10
					  ADD ESP, 0x14
					  TEST EAX, EAX
					  JL xiadan_00672DDF
					  POP EDI
					  POP ESI
					  POP EBP
					  MOV EAX, 0x401
					  POP EBX
					  ADD ESP, 0xC30
					  RET

					  xiadan_00672DDF :

				  LEA EDX, DWORD PTR SS : [ESP + 0x218]
					  PUSH ESI
					  PUSH EDX
					  LEA EAX, DWORD PTR SS : [ESP + 0x324]
					  PUSH EBP
					  LEA ECX, DWORD PTR SS : [ESP + 0x83C]
					  PUSH EAX
					  PUSH ECX
					  CALL xiadan_00674AD0
					  LEA EDX, DWORD PTR SS : [ESP + 0x434]
					  PUSH ESI
					  PUSH EDX
					  LEA EAX, DWORD PTR SS : [ESP + 0x338]
					  PUSH EBP
					  LEA ECX, DWORD PTR SS : [ESP + 0x648]
					  PUSH EAX
					  PUSH ECX
					  CALL xiadan_00674AD0
					  LEA EDX, DWORD PTR SS : [ESP + 0x240]
					  PUSH ESI
					  PUSH EDX
					  LEA EAX, DWORD PTR SS : [ESP + 0x75C]
					  PUSH ESI
					  LEA ECX, DWORD PTR SS : [ESP + 0x864]
					  PUSH EAX
					  LEA EDX, DWORD PTR SS : [ESP + 0x55C]
					  PUSH ECX
					  PUSH EDX
					  CALL xiadan_00674B80
					  ADD ESP, 0x40
					  LEA EAX, DWORD PTR SS : [ESP + 0x114]
					  PUSH EBX
					  PUSH EAX
					  CALL xiadan_00674990
					  LEA ECX, DWORD PTR SS : [ESP + 0x428]
					  PUSH ESI
					  PUSH ECX
					  LEA EDX, DWORD PTR SS : [ESP + 0x944]
					  PUSH ESI
					  LEA EAX, DWORD PTR SS : [ESP + 0x63C]
					  PUSH EDX
					  LEA ECX, DWORD PTR SS : [ESP + 0x12C]
					  PUSH EAX
					  PUSH ECX
					  CALL xiadan_00674B80
					  LEA EDX, DWORD PTR SS : [ESP + 0x134]
					  PUSH ESI
					  LEA EAX, DWORD PTR SS : [ESP + 0x548]
					  PUSH EDX
					  PUSH EAX
					  CALL xiadan_00674D10
					  ADD ESP, 0x2C
					  TEST EAX, EAX
					  PUSH ESI
					  JL xiadan_00672EB9
					  LEA ECX, DWORD PTR SS : [ESP + 0x118]
					  LEA EDX, DWORD PTR SS : [ESP + 0x528]
					  PUSH ECX
					  LEA EAX, DWORD PTR SS : [ESP + 0x18]
					  PUSH EDX
					  PUSH EAX
					  CALL xiadan_0067E0A0
					  ADD ESP, 0x10
					  JMP xiadan_00672EEE

					  xiadan_00672EB9 :

				  LEA ECX, DWORD PTR SS : [ESP + 0x528]
					  LEA EDX, DWORD PTR SS : [ESP + 0x118]
					  PUSH ECX
					  LEA EAX, DWORD PTR SS : [ESP + 0x18]
					  PUSH EDX
					  PUSH EAX
					  CALL xiadan_0067E0A0
					  LEA ECX, DWORD PTR SS : [ESP + 0x20]
					  PUSH ESI
					  LEA EDX, DWORD PTR SS : [ESP + 0x22C]
					  PUSH ECX
					  LEA EAX, DWORD PTR SS : [ESP + 0x28]
					  PUSH EDX
					  PUSH EAX
					  CALL xiadan_0067E0A0
					  ADD ESP, 0x20

					  xiadan_00672EEE :

					  LEA ECX, DWORD PTR SS : [ESP + 0x218]
					  PUSH ESI
					  LEA EDX, DWORD PTR SS : [ESP + 0xB40]
					  PUSH ECX
					  LEA EAX, DWORD PTR SS : [ESP + 0x18]
					  PUSH EDX
					  LEA ECX, DWORD PTR SS : [ESP + 0x1C]
					  PUSH EAX
					  PUSH ECX
					  CALL xiadan_00674B20
					  LEA EDX, DWORD PTR SS : [ESP + 0x434]
					  PUSH ESI
					  LEA EAX, DWORD PTR SS : [ESP + 0x28]
					  PUSH EDX
					  LEA ECX, DWORD PTR SS : [ESP + 0x2C]
					  PUSH EAX
					  PUSH ECX
					  CALL xiadan_00674A00
					  LEA EDX, DWORD PTR SS : [ESP + 0x138]
					  PUSH EBX
					  LEA EAX, DWORD PTR SS : [ESP + 0x38]
					  PUSH EDX
					  LEA ECX, DWORD PTR SS : [ESP + 0x3C]
					  PUSH EAX
					  PUSH ECX
					  CALL xiadan_006749B0
					  XOR EAX, EAX
					  LEA ECX, DWORD PTR SS : [ESP + 0x44]
					  MOV AX, WORD PTR DS : [EDI]
					  PUSH EBX
					  ADD EAX, 7
					  PUSH ECX
					  CDQ
					  AND EDX, 7
					  ADD EAX, EDX
					  MOV EDX, DWORD PTR SS : [ESP + 0xC84]
					  SAR EAX, 3
					  MOV DWORD PTR DS : [EDX], EAX
					  MOV EDX, DWORD PTR SS : [ESP + 0xC80]
					  PUSH EAX
					  PUSH EDX
					  CALL xiadan_00674910
					  ADD ESP, 0x44
					  LEA EAX, DWORD PTR SS : [ESP + 0x31C]
					  PUSH 0x104
					  PUSH 0
					  PUSH EAX
					  CALL xiadan_0067F920
					  PUSH 0x104
					  LEA ECX, DWORD PTR SS : [ESP + 0x840]
					  PUSH 0
					  PUSH ECX
					  CALL xiadan_0067F920
					  PUSH 0x104
					  LEA EDX, DWORD PTR SS : [ESP + 0x644]
					  PUSH 0
					  PUSH EDX
					  CALL xiadan_0067F920
					  PUSH 0x104
					  LEA EAX, DWORD PTR SS : [ESP + 0x754]
					  PUSH 0
					  PUSH EAX
					  CALL xiadan_0067F920
					  PUSH 0x104
					  LEA ECX, DWORD PTR SS : [ESP + 0x968]
					  PUSH 0
					  PUSH ECX
					  CALL xiadan_0067F920
					  PUSH 0x104
					  LEA EDX, DWORD PTR SS : [ESP + 0x564]
					  PUSH 0
					  PUSH EDX
					  CALL xiadan_0067F920
					  ADD ESP, 0x48
					  LEA EAX, DWORD PTR SS : [ESP + 0x114]
					  PUSH 0x104
					  PUSH 0
					  PUSH EAX
					  CALL xiadan_0067F920
					  PUSH 0x104
					  PUSH 0
					  LEA ECX, DWORD PTR SS : [ESP + 0x22C]
					  PUSH ECX
					  CALL xiadan_0067F920
					  PUSH 0x104
					  LEA EDX, DWORD PTR SS : [ESP + 0x43C]
					  PUSH 0
					  PUSH EDX
					  CALL xiadan_0067F920
					  PUSH 0x104
					  LEA EAX, DWORD PTR SS : [ESP + 0xB64]
					  PUSH 0
					  PUSH EAX
					  CALL xiadan_0067F920
					  PUSH 0x104
					  LEA ECX, DWORD PTR SS : [ESP + 0x44]
					  PUSH 0
					  PUSH ECX
					  CALL xiadan_0067F920
					  ADD ESP, 0x3C
					  XOR EAX, EAX
					  POP EDI
					  POP ESI
					  POP EBP
					  POP EBX
					  ADD ESP, 0xC30
					  RET; <= Procedure End

					  NOP
					  NOP
					  NOP
					  NOP
					  NOP



					  xiadan_006748B0 : ; <= Procedure Start

					  MOV EAX, DWORD PTR SS : [ESP + 0x10]
					  PUSH EBP
					  XOR EBP, EBP
					  DEC EAX
					  TEST EAX, EAX
					  PUSH EDI
					  JL xiadan_006748F1
					  MOV EDX, DWORD PTR SS : [ESP + 0xC]
					  MOV EDI, DWORD PTR SS : [ESP + 0x14]
					  PUSH EBX
					  PUSH ESI

					  xiadan_006748C7 :

				  XOR ESI, ESI
					  XOR ECX, ECX
					  TEST EAX, EAX
					  JL xiadan_006748E5

					  xiadan_006748CF :

				  CMP ECX, 0x20
					  JNB xiadan_006748E5
					  XOR EBX, EBX
					  MOV BL, BYTE PTR DS : [EAX + EDI]
					  SHL EBX, CL
					  ADD ECX, 8
					  OR ESI, EBX
					  DEC EAX
					  TEST EAX, EAX
					  JGE xiadan_006748CF

					  xiadan_006748E5 :

				  MOV DWORD PTR DS : [EDX], ESI
					  INC EBP
					  ADD EDX, 4
					  TEST EAX, EAX
					  JGE xiadan_006748C7
					  POP ESI
					  POP EBX

					  xiadan_006748F1 :

				  MOV ECX, DWORD PTR SS : [ESP + 0x10]
					  CMP EBP, ECX
					  JNB xiadan_00674906
					  MOV EDX, DWORD PTR SS : [ESP + 0xC]
					  SUB ECX, EBP
					  XOR EAX, EAX
					  LEA EDI, DWORD PTR DS : [EDX + EBP * 4]
					  REP STOS DWORD PTR ES : [EDI]

					  xiadan_00674906 :

					  POP EDI
					  POP EBP
					  RET; <= Procedure End

					  NOP
					  NOP
					  NOP
					  NOP
					  NOP
					  NOP
					  NOP

					  xiadan_00674910 : ; <= Procedure Start

					  MOV EAX, DWORD PTR SS : [ESP + 8]
					  MOV ECX, DWORD PTR SS : [ESP + 0x10]
					  DEC EAX
					  PUSH EBP
					  MOV EBP, DWORD PTR SS : [ESP + 8]
					  TEST ECX, ECX
					  JBE xiadan_0067495D
					  MOV EDX, DWORD PTR SS : [ESP + 0x10]
					  PUSH EBX
					  PUSH ESI
					  PUSH EDI
					  MOV DWORD PTR SS : [ESP + 0x18], ECX

					  xiadan_0067492D :

				  MOV EDI, DWORD PTR DS : [EDX]
					  XOR ESI, ESI
					  TEST EAX, EAX
					  JL xiadan_0067494C

					  xiadan_00674935 :

				  CMP ESI, 0x20
					  JNB xiadan_0067494C
					  MOV EBX, EDI
					  MOV ECX, ESI
					  SHR EBX, CL
					  DEC EAX
					  ADD ESI, 8
					  TEST EAX, EAX
					  MOV BYTE PTR DS : [EAX + EBP + 1], BL
					  JGE xiadan_00674935

					  xiadan_0067494C :

				  MOV ECX, DWORD PTR SS : [ESP + 0x18]
					  ADD EDX, 4
					  DEC ECX
					  MOV DWORD PTR SS : [ESP + 0x18], ECX
					  JNZ xiadan_0067492D
					  POP EDI
					  POP ESI
					  POP EBX

					  xiadan_0067495D :

				  TEST EAX, EAX
					  JL xiadan_00674968

					  xiadan_00674961 :

				  MOV BYTE PTR DS : [EAX + EBP], 0
					  DEC EAX
					  JNS xiadan_00674961

					  xiadan_00674968 :

				  POP EBP
					  RET; <= Procedure End

					  NOP
					  NOP
					  NOP
					  NOP
					  NOP
					  NOP

					  xiadan_00674970 : ; <= Procedure Start

					  MOV EDX, DWORD PTR SS : [ESP + 0xC]
					  TEST EDX, EDX
					  JBE xiadan_0067498F
					  MOV EAX, DWORD PTR SS : [ESP + 4]
					  MOV ECX, DWORD PTR SS : [ESP + 8]
					  PUSH ESI
					  SUB ECX, EAX

					  xiadan_00674983 :

				  MOV ESI, DWORD PTR DS : [ECX + EAX]
					  MOV DWORD PTR DS : [EAX], ESI
					  ADD EAX, 4
					  DEC EDX
					  JNZ xiadan_00674983
					  POP ESI

					  xiadan_0067498F :

				  RET; <= Procedure End


					  xiadan_00674990 : ; <= Procedure Start

					  MOV ECX, DWORD PTR SS : [ESP + 8]
					  TEST ECX, ECX
					  JBE xiadan_006749A2
					  PUSH EDI
					  MOV EDI, DWORD PTR SS : [ESP + 8]
					  XOR EAX, EAX
					  REP STOS DWORD PTR ES : [EDI]
					  POP EDI

					  xiadan_006749A2 :

				  RET; <= Procedure End

					  NOP
					  NOP
					  NOP
					  NOP
					  NOP
					  NOP
					  NOP
					  NOP
					  NOP
					  NOP
					  NOP
					  NOP
					  NOP

					  xiadan_006749B0 : ; <= Procedure Start

					  MOV ECX, DWORD PTR SS : [ESP + 0x10]
					  XOR EAX, EAX
					  TEST ECX, ECX
					  JBE xiadan_006749F2
					  MOV EDX, DWORD PTR SS : [ESP + 0xC]
					  PUSH EBX
					  PUSH ESI
					  MOV ESI, DWORD PTR SS : [ESP + 0xC]
					  PUSH EDI
					  MOV EDI, DWORD PTR SS : [ESP + 0x14]
					  SUB EDI, EDX
					  SUB ESI, EDX
					  MOV EBX, ECX

					  xiadan_006749CF :

				  MOV ECX, DWORD PTR DS : [EDI + EDX]
					  ADD ECX, EAX
					  CMP ECX, EAX
					  JNB xiadan_006749DC
					  MOV ECX, DWORD PTR DS : [EDX]
					  JMP xiadan_006749E6

					  xiadan_006749DC :

				  MOV EAX, DWORD PTR DS : [EDX]
					  ADD ECX, EAX
					  CMP ECX, EAX
					  SBB EAX, EAX
					  NEG EAX

					  xiadan_006749E6 :

				  MOV DWORD PTR DS : [ESI + EDX], ECX
					  ADD EDX, 4
					  DEC EBX
					  JNZ xiadan_006749CF
					  POP EDI
					  POP ESI
					  POP EBX

					  xiadan_006749F2 :

				  RET; <= Procedure End

					  NOP
					  NOP
					  NOP
					  NOP
					  NOP
					  NOP
					  NOP
					  NOP
					  NOP
					  NOP
					  NOP
					  NOP
					  NOP

					  xiadan_00674A00 : ; <= Procedure Start

					  SUB ESP, 0x210
					  PUSH EBX
					  PUSH EBP
					  PUSH ESI
					  MOV ESI, DWORD PTR SS : [ESP + 0x22C]
					  PUSH EDI
					  LEA EAX, DWORD PTR SS : [ESP + 0x18]
					  LEA EDI, DWORD PTR DS : [ESI + ESI]
					  PUSH EDI
					  PUSH EAX
					  MOV DWORD PTR SS : [ESP + 0x1C], EDI
					  CALL xiadan_00674990
					  MOV EBX, DWORD PTR SS : [ESP + 0x230]
					  PUSH ESI
					  PUSH EBX
					  CALL xiadan_0067E6A0
					  MOV ECX, DWORD PTR SS : [ESP + 0x23C]
					  PUSH ESI
					  PUSH ECX
					  MOV DWORD PTR SS : [ESP + 0x28], EAX
					  CALL xiadan_0067E6A0
					  MOV EBP, EAX
					  MOV EAX, DWORD PTR SS : [ESP + 0x28]
					  ADD ESP, 0x18
					  TEST EAX, EAX
					  JBE xiadan_00674A94
					  LEA EDX, DWORD PTR SS : [ESP + 0x18]
					  LEA ESI, DWORD PTR SS : [ESP + 0x18]
					  LEA EDI, DWORD PTR SS : [ESP + EBP * 4 + 0x18]
					  SUB EBX, EDX
					  MOV DWORD PTR SS : [ESP + 0x10], EAX

					  xiadan_00674A62 :

				  MOV ECX, DWORD PTR SS : [ESP + 0x22C]
					  MOV EDX, DWORD PTR DS : [EBX + ESI]
					  PUSH EBP
					  PUSH ECX
					  PUSH EDX
					  PUSH ESI
					  PUSH ESI
					  CALL xiadan_0067E6C0
					  MOV ECX, DWORD PTR DS : [EDI]
					  ADD ESP, 0x14
					  ADD ECX, EAX
					  MOV EAX, DWORD PTR SS : [ESP + 0x10]
					  MOV DWORD PTR DS : [EDI], ECX
					  ADD ESI, 4
					  ADD EDI, 4
					  DEC EAX
					  MOV DWORD PTR SS : [ESP + 0x10], EAX
					  JNZ xiadan_00674A62
					  MOV EDI, DWORD PTR SS : [ESP + 0x14]

					  xiadan_00674A94 :

					  MOV ECX, DWORD PTR SS : [ESP + 0x224]
					  LEA EAX, DWORD PTR SS : [ESP + 0x18]
					  PUSH EDI
					  PUSH EAX
					  PUSH ECX
					  CALL xiadan_00674970
					  PUSH 0x208
					  LEA EDX, DWORD PTR SS : [ESP + 0x28]
					  PUSH 0
					  PUSH EDX
					  CALL xiadan_0067F920
					  ADD ESP, 0x18
					  POP EDI
					  POP ESI
					  POP EBP
					  POP EBX
					  ADD ESP, 0x210
					  RET; <= Procedure End

					  NOP
					  NOP
					  NOP
					  NOP
					  NOP
					  NOP
					  NOP
					  NOP
					  NOP
					  NOP

					  xiadan_00674AD0 : ; <= Procedure Start

					  MOV EAX, DWORD PTR SS : [ESP + 0x14]
					  MOV ECX, DWORD PTR SS : [ESP + 0x10]
					  MOV EDX, DWORD PTR SS : [ESP + 0xC]
					  SUB ESP, 0x208
					  PUSH EAX
					  MOV EAX, DWORD PTR SS : [ESP + 0x214]
					  PUSH ECX
					  MOV ECX, DWORD PTR SS : [ESP + 0x214]
					  PUSH EDX
					  PUSH EAX
					  LEA EDX, DWORD PTR SS : [ESP + 0x10]
					  PUSH ECX
					  PUSH EDX
					  CALL xiadan_00674D50
					  PUSH 0x208
					  LEA EAX, DWORD PTR SS : [ESP + 0x1C]
					  PUSH 0
					  PUSH EAX
					  CALL xiadan_0067F920
					  ADD ESP, 0x22C
					  RET; <= Procedure End

					  NOP
					  NOP
					  NOP
					  NOP
					  NOP
					  NOP
					  NOP
					  NOP
					  NOP

					  xiadan_00674B20 : ; <= Procedure Start

					  MOV EAX, DWORD PTR SS : [ESP + 0xC]
					  MOV ECX, DWORD PTR SS : [ESP + 8]
					  SUB ESP, 0x208
					  LEA EDX, DWORD PTR SS : [ESP]
					  PUSH ESI
					  MOV ESI, DWORD PTR SS : [ESP + 0x220]
					  PUSH ESI
					  PUSH EAX
					  PUSH ECX
					  PUSH EDX
					  CALL xiadan_00674A00
					  MOV EAX, DWORD PTR SS : [ESP + 0x22C]
					  PUSH ESI
					  LEA ECX, DWORD PTR DS : [ESI + ESI]
					  PUSH EAX
					  MOV EAX, DWORD PTR SS : [ESP + 0x228]
					  LEA EDX, DWORD PTR SS : [ESP + 0x1C]
					  PUSH ECX
					  PUSH EDX
					  PUSH EAX
					  CALL xiadan_00674AD0
					  PUSH 0x208
					  LEA ECX, DWORD PTR SS : [ESP + 0x2C]
					  PUSH 0
					  PUSH ECX
					  CALL xiadan_0067F920
					  ADD ESP, 0x30
					  POP ESI
					  ADD ESP, 0x208
					  RET; <= Procedure End

					  NOP
					  NOP

					  xiadan_00674B80 : ; <= Procedure Start

					  SUB ESP, 0x41C
					  PUSH EBX
					  PUSH EBP
					  PUSH ESI
					  MOV ESI, DWORD PTR SS : [ESP + 0x430]
					  PUSH EDI
					  MOV EDI, DWORD PTR SS : [ESP + 0x444]
					  PUSH EDI
					  LEA EAX, DWORD PTR SS : [ESP + 0x124]
					  PUSH ESI
					  PUSH EAX
					  CALL xiadan_00674970
					  MOV EBX, DWORD PTR SS : [ESP + 0x44C]
					  PUSH EDI
					  PUSH EBX
					  LEA ECX, DWORD PTR SS : [ESP + 0x134]
					  PUSH ESI
					  LEA EDX, DWORD PTR SS : [ESP + 0x23C]
					  PUSH ECX
					  PUSH EDX
					  CALL xiadan_00674B20
					  PUSH EDI
					  PUSH EBX
					  LEA EAX, DWORD PTR SS : [ESP + 0x24C]
					  PUSH ESI
					  LEA ECX, DWORD PTR SS : [ESP + 0x354]
					  PUSH EAX
					  PUSH ECX
					  CALL xiadan_00674B20
					  LEA EDX, DWORD PTR SS : [ESP + 0x50]
					  PUSH EDI
					  PUSH EDX
					  CALL xiadan_00674990
					  MOV EAX, DWORD PTR SS : [ESP + 0x478]
					  MOV ESI, DWORD PTR SS : [ESP + 0x474]
					  PUSH EAX
					  PUSH ESI
					  MOV DWORD PTR SS : [ESP + 0x60], 1
					  CALL xiadan_0067E6A0
					  LEA ECX, DWORD PTR DS : [EAX - 1]
					  ADD ESP, 0x44
					  MOV EBP, ECX
					  MOV DWORD PTR SS : [ESP + 0x18], ECX
					  TEST EBP, EBP
					  JL xiadan_00674CC9
					  LEA ESI, DWORD PTR DS : [ESI + EBP * 4]
					  MOV DWORD PTR SS : [ESP + 0x14], ESI

					  xiadan_00674C21 :

				  MOV ESI, DWORD PTR DS : [ESI]
					  CMP EBP, ECX
					  MOV EAX, 0x20
					  JNZ xiadan_00674C46
					  TEST ESI, 0xC0000000
					  JNZ xiadan_00674C46

					  xiadan_00674C34 :

				  SHL ESI, 2
					  SUB EAX, 2
					  TEST ESI, 0xC0000000
					  JE xiadan_00674C34
					  TEST EAX, EAX
					  JBE xiadan_00674CB5

					  xiadan_00674C46 :

				  INC EAX
					  SHR EAX, 1
					  MOV DWORD PTR SS : [ESP + 0x10], EAX

					  xiadan_00674C4D :

				  PUSH EDI
					  LEA ECX, DWORD PTR SS : [ESP + 0x20]
					  PUSH EBX
					  LEA EDX, DWORD PTR SS : [ESP + 0x24]
					  PUSH ECX
					  LEA EAX, DWORD PTR SS : [ESP + 0x28]
					  PUSH EDX
					  PUSH EAX
					  CALL xiadan_00674B20
					  PUSH EDI
					  LEA ECX, DWORD PTR SS : [ESP + 0x34]
					  PUSH EBX
					  LEA EDX, DWORD PTR SS : [ESP + 0x38]
					  PUSH ECX
					  LEA EAX, DWORD PTR SS : [ESP + 0x3C]
					  PUSH EDX
					  PUSH EAX
					  CALL xiadan_00674B20
					  MOV EAX, ESI
					  ADD ESP, 0x28
					  SHR EAX, 0x1E
					  JE xiadan_00674CA3
					  MOV ECX, EAX
					  PUSH EDI
					  SHL ECX, 6
					  ADD ECX, EAX
					  PUSH EBX
					  LEA EAX, DWORD PTR SS : [ESP + 0x24]
					  LEA EDX, DWORD PTR SS : [ESP + ECX * 4 + 0x24]
					  LEA ECX, DWORD PTR SS : [ESP + 0x24]
					  PUSH EDX
					  PUSH EAX
					  PUSH ECX
					  CALL xiadan_00674B20
					  ADD ESP, 0x14

					  xiadan_00674CA3 :

					  MOV EAX, DWORD PTR SS : [ESP + 0x10]
					  SHL ESI, 2
					  DEC EAX
					  MOV DWORD PTR SS : [ESP + 0x10], EAX
					  JNZ xiadan_00674C4D
					  MOV ECX, DWORD PTR SS : [ESP + 0x18]

					  xiadan_00674CB5 :

					  MOV ESI, DWORD PTR SS : [ESP + 0x14]
					  DEC EBP
					  SUB ESI, 4
					  TEST EBP, EBP
					  MOV DWORD PTR SS : [ESP + 0x14], ESI
					  JGE xiadan_00674C21

					  xiadan_00674CC9 :

				  MOV EAX, DWORD PTR SS : [ESP + 0x430]
					  LEA EDX, DWORD PTR SS : [ESP + 0x1C]
					  PUSH EDI
					  PUSH EDX
					  PUSH EAX
					  CALL xiadan_00674970
					  PUSH 0x30C
					  LEA ECX, DWORD PTR SS : [ESP + 0x130]
					  PUSH 0
					  PUSH ECX
					  CALL xiadan_0067F920
					  PUSH 0x104
					  LEA EDX, DWORD PTR SS : [ESP + 0x38]
					  PUSH 0
					  PUSH EDX
					  CALL xiadan_0067F920
					  ADD ESP, 0x24
					  POP EDI
					  POP ESI
					  POP EBP
					  POP EBX
					  ADD ESP, 0x41C
					  RET; <= Procedure End

					  NOP

					  xiadan_00674D10 : ; <= Procedure Start

					  MOV EAX, DWORD PTR SS : [ESP + 0xC]
					  PUSH ESI
					  PUSH EDI
					  LEA ESI, DWORD PTR DS : [EAX - 1]
					  TEST ESI, ESI
					  JL xiadan_00674D3D
					  MOV ECX, DWORD PTR SS : [ESP + 0x10]
					  MOV EDI, DWORD PTR SS : [ESP + 0xC]
					  SUB EDI, ECX
					  LEA EAX, DWORD PTR DS : [ECX + ESI * 4]

					  xiadan_00674D2A :

					  MOV ECX, DWORD PTR DS : [EDI + EAX]
					  MOV EDX, DWORD PTR DS : [EAX]
					  CMP ECX, EDX
					  JA xiadan_00674D42
					  JB xiadan_00674D4A
					  DEC ESI
					  SUB EAX, 4
					  TEST ESI, ESI
					  JGE xiadan_00674D2A

					  xiadan_00674D3D :

				  POP EDI
					  XOR EAX, EAX
					  POP ESI
					  RET

					  xiadan_00674D42 :

				  POP EDI
					  MOV EAX, 1
					  POP ESI
					  RET

					  xiadan_00674D4A :

				  POP EDI
					  OR EAX, 0xFFFFFFFF
					  POP ESI
					  RET; <= Procedure End


					  xiadan_00674D50 : ; <= Procedure Start

					  MOV EAX, DWORD PTR SS : [ESP + 0x18]
					  SUB ESP, 0x324
					  PUSH EBX
					  PUSH EDI
					  MOV EDI, DWORD PTR SS : [ESP + 0x340]
					  PUSH EAX
					  PUSH EDI
					  CALL xiadan_0067E6A0
					  MOV EBX, EAX
					  ADD ESP, 8
					  TEST EBX, EBX
					  JE xiadan_00674F16
					  MOV ECX, DWORD PTR DS : [EDI + EBX * 4 - 4]
					  PUSH EBP
					  PUSH ESI
					  PUSH ECX
					  CALL xiadan_0067E7F0
					  MOV EBP, 0x20
					  LEA EDX, DWORD PTR SS : [ESP + 0x12C]
					  SUB EBP, EAX
					  PUSH EBX
					  PUSH EDX
					  MOV DWORD PTR SS : [ESP + 0x2C], EBP
					  CALL xiadan_00674990
					  MOV ESI, DWORD PTR SS : [ESP + 0x350]
					  MOV EAX, DWORD PTR SS : [ESP + 0x34C]
					  PUSH ESI
					  PUSH EBP
					  LEA ECX, DWORD PTR SS : [ESP + 0x13C]
					  PUSH EAX
					  PUSH ECX
					  CALL xiadan_00674F20
					  PUSH EBX
					  PUSH EBP
					  LEA EDX, DWORD PTR SS : [ESP + 0x48]
					  PUSH EDI
					  PUSH EDX
					  MOV DWORD PTR SS : [ESP + ESI * 4 + 0x154], EAX
					  CALL xiadan_00674F20
					  MOV EBP, DWORD PTR SS : [ESP + 0x364]
					  MOV EAX, DWORD PTR SS : [ESP + EBX * 4 + 0x4C]
					  PUSH ESI
					  PUSH EBP
					  MOV DWORD PTR SS : [ESP + 0x50], EAX
					  CALL xiadan_00674990
					  ADD ESP, 0x34
					  SUB ESI, EBX
					  MOV EAX, ESI
					  JS xiadan_00674EC3
					  MOV EDX, DWORD PTR SS : [ESP + 0x34C]
					  LEA ECX, DWORD PTR DS : [EAX + EBX]
					  LEA ESI, DWORD PTR SS : [ESP + EAX * 4 + 0x128]
					  LEA EDI, DWORD PTR SS : [ESP + ECX * 4 + 0x128]
					  LEA ECX, DWORD PTR DS : [EAX + EDX]
					  LEA EDX, DWORD PTR SS : [ESP + ECX * 4 + 0x128]
					  LEA ECX, DWORD PTR SS : [ESP + 0x128]
					  SUB EBP, ECX
					  INC EAX
					  MOV DWORD PTR SS : [ESP + 0x14], EDX
					  MOV DWORD PTR SS : [ESP + 0x18], EAX

					  xiadan_00674E25 :

				  MOV EAX, DWORD PTR SS : [ESP + 0x1C]
					  CMP EAX, -1
					  JNZ xiadan_00674E3A
					  MOV EDX, DWORD PTR SS : [ESP + 0x14]
					  MOV EAX, DWORD PTR DS : [EDX]
					  MOV DWORD PTR SS : [ESP + 0x10], EAX
					  JMP xiadan_00674E4D

					  xiadan_00674E3A :

				  INC EAX
					  LEA ECX, DWORD PTR DS : [EDI - 4]
					  PUSH EAX
					  LEA EDX, DWORD PTR SS : [ESP + 0x14]
					  PUSH ECX
					  PUSH EDX
					  CALL xiadan_00675220
					  ADD ESP, 0xC

					  xiadan_00674E4D :

					  MOV ECX, DWORD PTR SS : [ESP + 0x10]
					  LEA EAX, DWORD PTR SS : [ESP + 0x24]
					  PUSH EBX
					  PUSH EAX
					  PUSH ECX
					  PUSH ESI
					  PUSH ESI
					  CALL xiadan_0067E750
					  ADD ESP, 0x14

					  xiadan_00674E62:

				  MOV ECX, DWORD PTR DS : [EDI]
					  SUB ECX, EAX
					  MOV EAX, ECX
					  MOV DWORD PTR DS : [EDI], ECX
					  TEST EAX, EAX
					  JNZ xiadan_00674E81
					  LEA EDX, DWORD PTR SS : [ESP + 0x24]
					  PUSH EBX
					  PUSH EDX
					  PUSH ESI
					  CALL xiadan_00674D10
					  ADD ESP, 0xC
					  TEST EAX, EAX
					  JL xiadan_00674E9C

					  xiadan_00674E81 :

				  MOV ECX, DWORD PTR SS : [ESP + 0x10]
					  LEA EAX, DWORD PTR SS : [ESP + 0x24]
					  PUSH EBX
					  PUSH EAX
					  INC ECX
					  PUSH ESI
					  PUSH ESI
					  MOV DWORD PTR SS : [ESP + 0x20], ECX
					  CALL xiadan_0067E0A0
					  ADD ESP, 0x10
					  JMP xiadan_00674E62

					  xiadan_00674E9C :

				  MOV ECX, DWORD PTR SS : [ESP + 0x10]
					  MOV EDX, DWORD PTR SS : [ESP + 0x14]
					  MOV EAX, DWORD PTR SS : [ESP + 0x18]
					  MOV DWORD PTR DS : [ESI + EBP], ECX
					  SUB EDI, 4
					  SUB EDX, 4
					  SUB ESI, 4
					  DEC EAX
					  MOV DWORD PTR SS : [ESP + 0x14], EDX
					  MOV DWORD PTR SS : [ESP + 0x18], EAX
					  JNZ xiadan_00674E25

					  xiadan_00674EC3 :

				  MOV EDX, DWORD PTR SS : [ESP + 0x34C]
					  MOV ESI, DWORD PTR SS : [ESP + 0x33C]
					  PUSH EDX
					  PUSH ESI
					  CALL xiadan_00674990
					  MOV EAX, DWORD PTR SS : [ESP + 0x28]
					  PUSH EBX
					  LEA ECX, DWORD PTR SS : [ESP + 0x134]
					  PUSH EAX
					  PUSH ECX
					  PUSH ESI
					  CALL xiadan_00674F90
					  PUSH 0x20C
					  LEA EDX, DWORD PTR SS : [ESP + 0x144]
					  PUSH 0
					  PUSH EDX
					  CALL xiadan_0067F920
					  PUSH 0x104
					  LEA EAX, DWORD PTR SS : [ESP + 0x4C]
					  PUSH 0
					  PUSH EAX
					  CALL xiadan_0067F920
					  ADD ESP, 0x30
					  POP ESI
					  POP EBP

					  xiadan_00674F16 :

				  POP EDI
					  POP EBX
					  ADD ESP, 0x324
					  RET; <= Procedure End

					  NOP

					  xiadan_00674F20 : ; <= Procedure Start

					  PUSH ECX
					  PUSH EDI
					  MOV EDI, DWORD PTR SS : [ESP + 0x14]
					  CMP EDI, 0x20
					  JB xiadan_00674F30
					  XOR EAX, EAX
					  POP EDI
					  POP ECX
					  RET

					  xiadan_00674F30 :

				  MOV ECX, DWORD PTR SS : [ESP + 0x18]
					  MOV EAX, 0x20
					  SUB EAX, EDI
					  MOV DWORD PTR SS : [ESP + 4], EAX
					  XOR EAX, EAX
					  TEST ECX, ECX
					  JBE xiadan_00674F84
					  PUSH EBX
					  MOV EBX, DWORD PTR SS : [ESP + 0x14]
					  PUSH EBP
					  PUSH ESI
					  MOV ESI, DWORD PTR SS : [ESP + 0x18]
					  MOV DWORD PTR SS : [ESP + 0x20], ECX
					  SUB EBX, ESI

					  xiadan_00674F56 :

				  MOV EDX, DWORD PTR DS : [EBX + ESI]
					  MOV ECX, EDI
					  MOV EBP, EDX
					  SHL EBP, CL
					  OR EBP, EAX
					  TEST EDI, EDI
					  MOV DWORD PTR DS : [ESI], EBP
					  JE xiadan_00674F71
					  MOV ECX, DWORD PTR SS : [ESP + 0x10]
					  SHR EDX, CL
					  MOV EAX, EDX
					  JMP xiadan_00674F73

					  xiadan_00674F71 :

				  XOR EAX, EAX

					  xiadan_00674F73 :

				  MOV ECX, DWORD PTR SS : [ESP + 0x20]
					  ADD ESI, 4
					  DEC ECX
					  MOV DWORD PTR SS : [ESP + 0x20], ECX
					  JNZ xiadan_00674F56
					  POP ESI
					  POP EBP
					  POP EBX

					  xiadan_00674F84 :

				  POP EDI
					  POP ECX
					  RET; <= Procedure End

					  NOP
					  NOP
					  NOP
					  NOP
					  NOP
					  NOP
					  NOP
					  NOP
					  NOP

					  xiadan_00674F90 : ; <= Procedure Start

					  PUSH ECX
					  PUSH EDI
					  MOV EDI, DWORD PTR SS : [ESP + 0x14]
					  CMP EDI, 0x20
					  JB xiadan_00674FA0
					  XOR EAX, EAX
					  POP EDI
					  POP ECX
					  RET

					  xiadan_00674FA0 :

				  MOV ECX, DWORD PTR SS : [ESP + 0x18]
					  MOV EAX, 0x20
					  SUB EAX, EDI
					  MOV DWORD PTR SS : [ESP + 4], EAX
					  XOR EAX, EAX
					  DEC ECX
					  TEST ECX, ECX
					  JL xiadan_00674FF9
					  MOV EDX, DWORD PTR SS : [ESP + 0xC]
					  PUSH EBX
					  MOV EBX, DWORD PTR SS : [ESP + 0x14]
					  PUSH EBP
					  PUSH ESI
					  LEA ESI, DWORD PTR DS : [EDX + ECX * 4]
					  SUB EBX, EDX
					  INC ECX
					  MOV DWORD PTR SS : [ESP + 0x20], ECX

					  xiadan_00674FCB :

				  MOV EDX, DWORD PTR DS : [EBX + ESI]
					  MOV ECX, EDI
					  MOV EBP, EDX
					  SHR EBP, CL
					  OR EBP, EAX
					  TEST EDI, EDI
					  MOV DWORD PTR DS : [ESI], EBP
					  JE xiadan_00674FE6
					  MOV ECX, DWORD PTR SS : [ESP + 0x10]
					  SHL EDX, CL
					  MOV EAX, EDX
					  JMP xiadan_00674FE8

					  xiadan_00674FE6 :

				  XOR EAX, EAX

					  xiadan_00674FE8 :

				  MOV ECX, DWORD PTR SS : [ESP + 0x20]
					  SUB ESI, 4
					  DEC ECX
					  MOV DWORD PTR SS : [ESP + 0x20], ECX
					  JNZ xiadan_00674FCB
					  POP ESI
					  POP EBP
					  POP EBX

					  xiadan_00674FF9 :

				  POP EDI
					  POP ECX
					  RET; <= Procedure End

					  NOP
					  NOP
					  NOP
					  NOP



					  xiadan_00675220 : ; <= Procedure Start

					  SUB ESP, 8
					  MOV EAX, DWORD PTR SS : [ESP + 0x10]
					  PUSH EBX
					  PUSH EBP
					  PUSH ESI
					  MOV ESI, DWORD PTR SS : [ESP + 0x20]
					  MOV ECX, DWORD PTR DS : [EAX]
					  MOV EBP, DWORD PTR DS : [EAX + 4]
					  PUSH EDI
					  MOV EDI, ESI
					  SHR EDI, 0x10
					  CMP DI, 0xFFFF
					  MOV DWORD PTR SS : [ESP + 0x14], EDI
					  JNZ xiadan_0067524F
					  MOV EAX, EBP
					  SHR EAX, 0x10
					  MOV DWORD PTR SS : [ESP + 0x20], EAX
					  JMP xiadan_00675262

					  xiadan_0067524F :

				  MOV EBX, EDI
					  MOV EAX, EBP
					  AND EBX, 0xFFFF
					  XOR EDX, EDX
					  INC EBX
					  DIV EBX
					  MOV DWORD PTR SS : [ESP + 0x20], EAX

					  xiadan_00675262 :

				  AND ESI, 0xFFFF
					  AND EAX, 0xFFFF
					  MOV EDX, ESI
					  AND EDI, 0xFFFF
					  IMUL EDX, EAX
					  IMUL EAX, EDI
					  MOV EBX, EDX
					  MOV DWORD PTR SS : [ESP + 0x10], EAX
					  SHL EBX, 0x10
					  OR EAX, 0xFFFFFFFF
					  SUB ECX, EBX
					  SUB EAX, EBX
					  CMP ECX, EAX
					  JBE xiadan_00675290
					  DEC EBP

					  xiadan_00675290 :

				  MOV EBX, DWORD PTR SS : [ESP + 0x10]
					  SHR EDX, 0x10
					  ADD EDX, EBX
					  SUB EBP, EDX

					  xiadan_0067529B :

				  CMP EBP, EDI
					  JA xiadan_006752AA
					  JNZ xiadan_006752C8
					  MOV EDX, ESI
					  SHL EDX, 0x10
					  CMP ECX, EDX
					  JB xiadan_006752C8

					  xiadan_006752AA :

				  MOV EAX, ESI
					  OR EDX, 0xFFFFFFFF
					  SHL EAX, 0x10
					  SUB ECX, EAX
					  SUB EDX, EAX
					  CMP ECX, EDX
					  JBE xiadan_006752BB
					  DEC EBP

					  xiadan_006752BB :

				  MOV EAX, DWORD PTR SS : [ESP + 0x20]
					  SUB EBP, EDI
					  INC EAX
					  MOV DWORD PTR SS : [ESP + 0x20], EAX
					  JMP xiadan_0067529B

					  xiadan_006752C8 :

				  CMP WORD PTR SS : [ESP + 0x14], 0xFFFF
					  JNZ xiadan_006752D5
					  MOV EAX, EBP
					  JMP xiadan_006752E8

					  xiadan_006752D5 :

				  MOV EAX, ECX
					  MOV EDX, EBP
					  SHR EAX, 0x10
					  SHL EDX, 0x10
					  ADD EAX, EDX
					  LEA EBX, DWORD PTR DS : [EDI + 1]
					  XOR EDX, EDX
					  DIV EBX

					  xiadan_006752E8 :

				  MOV EDX, EAX
					  AND EDX, 0xFFFF
					  IMUL ESI, EDX
					  IMUL EDX, EDI
					  OR EDI, 0xFFFFFFFF
					  SUB ECX, ESI
					  SUB EDI, ESI
					  CMP ECX, EDI
					  JBE xiadan_00675302
					  DEC EBP

					  xiadan_00675302 :

				  MOV ESI, EDX
					  OR EDI, 0xFFFFFFFF
					  SHL ESI, 0x10
					  SUB ECX, ESI
					  SUB EDI, ESI
					  CMP ECX, EDI
					  JBE xiadan_00675313
					  DEC EBP

					  xiadan_00675313 :

				  SHR EDX, 0x10
					  SUB EBP, EDX

					  xiadan_00675318 :

				  TEST EBP, EBP
					  JA xiadan_00675328
					  JNZ xiadan_0067533B
					  MOV EDX, DWORD PTR SS : [ESP + 0x24]
					  CMP ECX, EDX
					  JB xiadan_0067533B
					  JMP xiadan_0067532C

					  xiadan_00675328 :

				  MOV EDX, DWORD PTR SS : [ESP + 0x24]

					  xiadan_0067532C :

					  OR ESI, 0xFFFFFFFF
					  SUB ECX, EDX
					  SUB ESI, EDX
					  CMP ECX, ESI
					  JBE xiadan_00675338
					  DEC EBP

					  xiadan_00675338 :

				  INC EAX
					  JMP xiadan_00675318

					  xiadan_0067533B :

				  MOV ECX, DWORD PTR SS : [ESP + 0x20]
					  AND EAX, 0xFFFF
					  AND ECX, 0xFFFF
					  POP EDI
					  SHL ECX, 0x10
					  ADD ECX, EAX
					  MOV EAX, DWORD PTR SS : [ESP + 0x18]
					  POP ESI
					  POP EBP
					  MOV DWORD PTR DS : [EAX], ECX
					  POP EBX
					  ADD ESP, 8
					  RET; <= Procedure End

					  NOP
					  NOP
					  NOP



					  xiadan_0067E0A0 : ; <= Procedure Start

					  MOV ECX, DWORD PTR SS : [ESP + 0x10]
					  XOR EAX, EAX
					  TEST ECX, ECX
					  JBE xiadan_0067E0F3
					  MOV EDX, DWORD PTR SS : [ESP + 0xC]
					  PUSH EBX
					  PUSH EBP
					  PUSH ESI
					  MOV ESI, DWORD PTR SS : [ESP + 0x14]
					  PUSH EDI
					  MOV EDI, DWORD PTR SS : [ESP + 0x14]
					  SUB ESI, EDX
					  SUB EDI, EDX
					  MOV EBX, ECX

					  xiadan_0067E0C0 :

				  MOV ECX, DWORD PTR DS : [ESI + EDX]
					  OR EBP, 0xFFFFFFFF
					  SUB ECX, EAX
					  SUB EBP, EAX
					  CMP ECX, EBP
					  JBE xiadan_0067E0D7
					  MOV EBP, DWORD PTR DS : [EDX]
					  OR ECX, 0xFFFFFFFF
					  SUB ECX, EBP
					  JMP xiadan_0067E0E6

					  xiadan_0067E0D7 :

				  MOV EAX, DWORD PTR DS : [EDX]
					  OR EBP, 0xFFFFFFFF
					  SUB ECX, EAX
					  SUB EBP, EAX
					  CMP EBP, ECX
					  SBB EAX, EAX
					  NEG EAX

					  xiadan_0067E0E6 :

				  MOV DWORD PTR DS : [EDI + EDX], ECX
					  ADD EDX, 4
					  DEC EBX
					  JNZ xiadan_0067E0C0
					  POP EDI
					  POP ESI
					  POP EBP
					  POP EBX

					  xiadan_0067E0F3 :

				  RET; <= Procedure End

					  NOP
					  NOP
					  NOP
					  NOP
					  NOP
					  NOP
					  NOP
					  NOP
					  NOP
					  NOP
					  NOP
					  NOP



					  xiadan_0067E6A0 : ; <= Procedure Start

					  MOV EAX, DWORD PTR SS : [ESP + 8]
					  DEC EAX
					  TEST EAX, EAX
					  JL xiadan_0067E6BD
					  MOV ECX, DWORD PTR SS : [ESP + 4]
					  LEA ECX, DWORD PTR DS : [ECX + EAX * 4]

					  xiadan_0067E6B0 :

					  CMP DWORD PTR DS : [ECX], 0
					  JNZ xiadan_0067E6BD
					  DEC EAX
					  SUB ECX, 4
					  TEST EAX, EAX
					  JGE xiadan_0067E6B0

					  xiadan_0067E6BD :

				  INC EAX
					  RET; <= Procedure End

					  NOP

					  xiadan_0067E6C0 : ; <= Procedure Start

					  MOV EAX, DWORD PTR SS : [ESP + 0xC]
					  SUB ESP, 8
					  TEST EAX, EAX
					  JNZ xiadan_0067E6D1
					  XOR EAX, EAX
					  ADD ESP, 8
					  RET

					  xiadan_0067E6D1 :

				  MOV EAX, DWORD PTR SS : [ESP + 0x1C]
					  PUSH EDI
					  XOR EDI, EDI
					  TEST EAX, EAX
					  JBE xiadan_0067E749
					  PUSH EBX
					  MOV EBX, DWORD PTR SS : [ESP + 0x18]
					  PUSH EBP
					  MOV EBP, DWORD PTR SS : [ESP + 0x24]
					  PUSH ESI
					  MOV ESI, DWORD PTR SS : [ESP + 0x1C]
					  SUB EBP, EBX
					  SUB EBX, ESI
					  MOV DWORD PTR SS : [ESP + 0x1C], EBX
					  MOV DWORD PTR SS : [ESP + 0x2C], EAX
					  JMP xiadan_0067E6FD

					  xiadan_0067E6F9 :

				  MOV EBX, DWORD PTR SS : [ESP + 0x1C]

					  xiadan_0067E6FD :

					  MOV ECX, DWORD PTR SS : [ESP + 0x24]
					  ADD EBX, ESI
					  LEA EDX, DWORD PTR SS : [ESP + 0x10]
					  MOV EAX, DWORD PTR DS : [EBX + EBP]
					  PUSH EAX
					  PUSH ECX
					  PUSH EDX
					  CALL xiadan_0067F980
					  MOV EAX, DWORD PTR DS : [EBX]
					  ADD ESP, 0xC
					  ADD EAX, EDI
					  MOV DWORD PTR DS : [ESI], EAX
					  MOV EDX, DWORD PTR DS : [ESI]
					  CMP EAX, EDI
					  MOV EAX, DWORD PTR SS : [ESP + 0x10]
					  SBB EDI, EDI
					  ADD EDX, EAX
					  MOV ECX, EDX
					  MOV DWORD PTR DS : [ESI], EDX
					  NEG EDI
					  CMP ECX, EAX
					  JNB xiadan_0067E732
					  INC EDI

					  xiadan_0067E732 :

				  MOV EDX, DWORD PTR SS : [ESP + 0x14]
					  MOV EAX, DWORD PTR SS : [ESP + 0x2C]
					  ADD EDI, EDX
					  ADD ESI, 4
					  DEC EAX
					  MOV DWORD PTR SS : [ESP + 0x2C], EAX
					  JNZ xiadan_0067E6F9
					  POP ESI
					  POP EBP
					  POP EBX

					  xiadan_0067E749 :

				  MOV EAX, EDI
					  POP EDI
					  ADD ESP, 8
					  RET; <= Procedure End


					  xiadan_0067E750 : ; <= Procedure Start

					  MOV EAX, DWORD PTR SS : [ESP + 0xC]
					  SUB ESP, 8
					  TEST EAX, EAX
					  JNZ xiadan_0067E761
					  XOR EAX, EAX
					  ADD ESP, 8
					  RET

					  xiadan_0067E761 :

				  MOV EAX, DWORD PTR SS : [ESP + 0x1C]
					  PUSH EDI
					  XOR EDI, EDI
					  TEST EAX, EAX
					  JBE xiadan_0067E7E1
					  PUSH EBX
					  MOV EBX, DWORD PTR SS : [ESP + 0x18]
					  PUSH EBP
					  MOV EBP, DWORD PTR SS : [ESP + 0x24]
					  PUSH ESI
					  MOV ESI, DWORD PTR SS : [ESP + 0x1C]
					  SUB EBP, EBX
					  SUB EBX, ESI
					  MOV DWORD PTR SS : [ESP + 0x1C], EBX
					  MOV DWORD PTR SS : [ESP + 0x2C], EAX
					  JMP xiadan_0067E78D

					  xiadan_0067E789 :

				  MOV EBX, DWORD PTR SS : [ESP + 0x1C]

					  xiadan_0067E78D :

					  MOV ECX, DWORD PTR SS : [ESP + 0x24]
					  ADD EBX, ESI
					  LEA EDX, DWORD PTR SS : [ESP + 0x10]
					  MOV EAX, DWORD PTR DS : [EBX + EBP]
					  PUSH EAX
					  PUSH ECX
					  PUSH EDX
					  CALL xiadan_0067F980
					  MOV EAX, DWORD PTR DS : [EBX]
					  OR ECX, 0xFFFFFFFF
					  SUB EAX, EDI
					  SUB ECX, EDI
					  ADD ESP, 0xC
					  CMP ECX, EAX
					  MOV DWORD PTR DS : [ESI], EAX
					  MOV EAX, DWORD PTR SS : [ESP + 0x10]
					  MOV ECX, DWORD PTR DS : [ESI]
					  SBB EDI, EDI
					  OR EDX, 0xFFFFFFFF
					  SUB ECX, EAX
					  SUB EDX, EAX
					  NEG EDI
					  CMP ECX, EDX
					  MOV DWORD PTR DS : [ESI], ECX
					  JBE xiadan_0067E7CA
					  INC EDI

					  xiadan_0067E7CA :

				  MOV EDX, DWORD PTR SS : [ESP + 0x14]
					  MOV EAX, DWORD PTR SS : [ESP + 0x2C]
					  ADD EDI, EDX
					  ADD ESI, 4
					  DEC EAX
					  MOV DWORD PTR SS : [ESP + 0x2C], EAX
					  JNZ xiadan_0067E789
					  POP ESI
					  POP EBP
					  POP EBX

					  xiadan_0067E7E1 :

				  MOV EAX, EDI
					  POP EDI
					  ADD ESP, 8
					  RET; <= Procedure End

					  NOP
					  NOP
					  NOP
					  NOP
					  NOP
					  NOP
					  NOP
					  NOP

					  xiadan_0067E7F0 : ; <= Procedure Start

					  MOV ECX, DWORD PTR SS : [ESP + 4]
					  XOR EAX, EAX

					  xiadan_0067E7F6 :

				  TEST ECX, ECX
					  JE xiadan_0067E802
					  INC EAX
					  SHR ECX, 1
					  CMP EAX, 0x20
					  JB xiadan_0067E7F6

					  xiadan_0067E802 :

				  RET; <= Procedure End

					  NOP
					  NOP
					  NOP
					  NOP
					  NOP
					  NOP
					  NOP
					  NOP
					  NOP
					  NOP
					  NOP
					  NOP
					  NOP




					  xiadan_0067F920 : ; <= Procedure Start

					  MOV ECX, DWORD PTR SS : [ESP + 0xC]
					  TEST ECX, ECX
					  JE xiadan_0067F94E
					  MOV AL, BYTE PTR SS : [ESP + 8]
					  PUSH EBX
					  MOV BL, AL
					  MOV EDX, ECX
					  MOV BH, BL
					  PUSH EDI
					  MOV EDI, DWORD PTR SS : [ESP + 0xC]
					  MOV EAX, EBX
					  SHL EAX, 0x10
					  MOV AX, BX
					  SHR ECX, 2
					  REP STOS DWORD PTR ES : [EDI]
					  MOV ECX, EDX
					  AND ECX, 3
					  REP STOS BYTE PTR ES : [EDI]
					  POP EDI
					  POP EBX

					  xiadan_0067F94E :

				  RET; <= Procedure End

					  NOP

					  xiadan_0067F950 : ; <= Procedure Start

					  MOV ECX, DWORD PTR SS : [ESP + 0xC]
					  TEST ECX, ECX
					  JE xiadan_0067F972
					  PUSH ESI
					  MOV ESI, DWORD PTR SS : [ESP + 0xC]
					  MOV EAX, ECX
					  PUSH EDI
					  MOV EDI, DWORD PTR SS : [ESP + 0xC]
					  SHR ECX, 2
					  REP MOVS DWORD PTR ES : [EDI], DWORD PTR DS : [ESI]
					  MOV ECX, EAX
					  AND ECX, 3
					  REP MOVS BYTE PTR ES : [EDI], BYTE PTR DS : [ESI]
					  POP EDI
					  POP ESI

					  xiadan_0067F972 :

				  RET; <= Procedure End

					  NOP
					  NOP
					  NOP
					  NOP
					  NOP
					  NOP
					  NOP
					  NOP
					  NOP
					  NOP
					  NOP
					  NOP
					  NOP

					  xiadan_0067F980 : ; <= Procedure Start

					  MOV EAX, DWORD PTR SS : [ESP + 8]
					  MOV ECX, DWORD PTR SS : [ESP + 0xC]
					  PUSH EBX
					  PUSH EBP
					  PUSH ESI
					  MOV ESI, EAX
					  PUSH EDI
					  MOV EDI, ECX
					  SHR ESI, 0x10
					  AND EAX, 0xFFFF
					  MOV EBX, ESI
					  SHR EDI, 0x10
					  AND ECX, 0xFFFF
					  MOV EDX, EAX
					  AND EBX, 0xFFFF
					  AND EDI, 0xFFFF
					  IMUL EDX, ECX
					  IMUL ECX, EBX
					  IMUL EAX, EDI
					  MOV ESI, EDI
					  MOV EBP, DWORD PTR SS : [ESP + 0x14]
					  IMUL ESI, EBX
					  ADD EAX, ECX
					  MOV DWORD PTR SS : [EBP], EDX
					  CMP EAX, ECX
					  MOV DWORD PTR SS : [EBP + 4], ESI
					  JNB xiadan_0067F9D8
					  ADD ESI, 0x10000
					  MOV DWORD PTR SS : [EBP + 4], ESI

					  xiadan_0067F9D8 :

				  MOV ECX, EAX
					  SHL ECX, 0x10
					  ADD EDX, ECX
					  CMP EDX, ECX
					  MOV DWORD PTR SS : [EBP], EDX
					  JNB xiadan_0067F9E9
					  INC DWORD PTR SS : [EBP + 4]

					  xiadan_0067F9E9 :

					  MOV ECX, DWORD PTR SS : [EBP + 4]
					  POP EDI
					  SHR EAX, 0x10
					  ADD ECX, EAX
					  POP ESI
					  MOV DWORD PTR SS : [EBP + 4], ECX
					  POP EBP
					  POP EBX
					  RET; <= Procedure End

	ASM_END

}

void signature(unsigned char *src, int32_t len, unsigned char *dst, int32_t *len_ptr, unsigned char *src2)
{
	
		ASM_START
		push ebp
		push esp

		push src2
		push len_ptr
		push dst
		push len
		push src

		call xiadan_0056898F

		pop esp
		pop ebp
		ASM_END

		return;
	

	ASM_START
	xiadan_0056898F:; <= Procedure Start

		PUSH EBP
		MOV EBP, ESP
		SUB ESP, 0810h
		PUSH ESI
		XOR ESI, ESI
		PUSH EDI
		LEA EAX, DWORD PTR SS : [EBP - 010h]
		PUSH ESI
		PUSH EAX
		PUSH DWORD PTR SS : [EBP + 0Ch]
		MOV EDI, ECX
		PUSH DWORD PTR SS : [EBP + 8]
		PUSH 01003h
		CALL xiadan_00568A38; <= Jump / Call Address Not Resolved
		LEA EAX, DWORD PTR SS : [EBP + 8]
		MOV ECX, EDI
		PUSH EAX
		LEA EAX, DWORD PTR SS : [EBP - 0810h]
		PUSH EAX
		MOV DWORD PTR SS : [EBP + 0Ch], ESI
		PUSH DWORD PTR SS : [EBP + 018h]
		MOV DWORD PTR SS : [EBP + 8], ESI
		CALL xiadan_00568A5B; <= Jump / Call Address Not Resolved
		LEA EAX, DWORD PTR SS : [EBP + 0Ch]
		PUSH EAX
		PUSH 03000h
		CALL pkcCreate; <= Jump / Call Address Not Resolved
		MOV EDI, EAX
		POP ECX
		CMP EDI, ESI
		POP ECX
		JNZ xiadan_00568A1D
		PUSH ESI
		LEA EAX, DWORD PTR SS : [EBP - 0810h]
		PUSH ESI
		PUSH EAX
		PUSH DWORD PTR SS : [EBP + 8]
		PUSH 014h
		PUSH DWORD PTR SS : [EBP + 0Ch]
		CALL pkcCtrl; <= Jump / Call Address Not Resolved
		MOV EDI, EAX
		ADD ESP, 018h
		CMP EDI, ESI
		JNZ xiadan_00568A1D
		PUSH ESI
		LEA EAX, DWORD PTR SS : [EBP - 010h]
		PUSH DWORD PTR SS : [EBP + 014h]
		PUSH DWORD PTR SS : [EBP + 010h]
		PUSH 010h
		PUSH EAX
		PUSH DWORD PTR SS : [EBP + 0Ch]
		CALL pkcEncrypt; <= Jump / Call Address Not Resolved
		ADD ESP, 018h
		MOV EDI, EAX

		xiadan_00568A1D:

		CMP DWORD PTR SS : [EBP + 0Ch], ESI
		JE xiadan_00568A2B
		PUSH DWORD PTR SS : [EBP + 0Ch]
		CALL pkcDestroy; <= Jump / Call Address Not Resolved
		POP ECX

		xiadan_00568A2B:

		XOR EAX, EAX
		CMP EDI, ESI
		POP EDI
		POP ESI
		SETNE AL
		LEAVE
		RETN 014h; <= Procedure End


	xiadan_00568A5B:; <= Procedure Start

		PUSH EBP
		MOV EBP, ESP
		PUSH EBX
		PUSH ESI
		MOV ESI, DWORD PTR SS : [EBP + 0Ch]
		XOR AL, AL
		MOV DWORD PTR SS : [EBP + 0Ch], ESI
		MOV EBX, DWORD PTR SS : [EBP + 8]
		MOV BYTE PTR DS : [ESI], 1
		INC ESI
		PUSH EDI
		MOV EDI, 0100h
		MOV BYTE PTR DS : [ESI], AL
		INC ESI
		PUSH EDI
		MOV BYTE PTR DS : [ESI], 1
		INC ESI
		MOV BYTE PTR DS : [ESI], AL
		INC ESI
		MOV BYTE PTR DS : [ESI], 1
		INC ESI
		MOV BYTE PTR DS : [ESI], AL
		INC ESI
		MOV BYTE PTR DS : [ESI], AL
		INC ESI
		MOV BYTE PTR DS : [ESI], 080h
		INC ESI
		MOV BYTE PTR DS : [ESI], AL
		INC ESI
		MOV BYTE PTR DS : [ESI], 080h
		INC ESI
		MOV BYTE PTR DS : [ESI], AL
		INC ESI
		MOV BYTE PTR DS : [ESI], 080h
		INC ESI
		MOV BYTE PTR DS : [ESI], AL
		INC ESI
		MOV BYTE PTR DS : [ESI], 080h
		INC ESI
		MOV BYTE PTR DS : [ESI], AL
		INC ESI
		LEA EAX, DWORD PTR DS : [EBX + 2]
		MOV BYTE PTR DS : [ESI], 080h
		INC ESI
		PUSH EAX
		PUSH ESI
		CALL memcpy
		LEA EAX, DWORD PTR DS : [EBX + 0102h]
		ADD ESI, EDI
		PUSH EDI
		PUSH EAX
		PUSH ESI
		CALL memcpy; <= Jump / Call Address Not Resolved
		LEA EAX, DWORD PTR DS : [EBX + 0202h]
		ADD ESI, EDI
		PUSH EDI
		PUSH EAX
		PUSH ESI
		CALL memcpy; <= Jump / Call Address Not Resolved
		ADD ESI, EDI
		ADD EDI, -080h
		LEA EAX, DWORD PTR DS : [EBX + 0302h]
		PUSH EDI
		PUSH EAX
		PUSH ESI
		CALL memcpy; <= Jump / Call Address Not Resolved
		LEA EAX, DWORD PTR DS : [EBX + 0382h]
		ADD ESI, EDI
		PUSH EDI
		PUSH EAX
		PUSH ESI
		CALL memcpy; <= Jump / Call Address Not Resolved
		LEA EAX, DWORD PTR DS : [EBX + 0402h]
		ADD ESI, EDI
		PUSH EDI
		PUSH EAX
		PUSH ESI
		CALL memcpy; <= Jump / Call Address Not Resolved
		ADD ESP, 048h
		LEA EAX, DWORD PTR DS : [EBX + 0482h]
		ADD ESI, EDI
		PUSH EDI
		PUSH EAX
		PUSH ESI
		CALL memcpy; <= Jump / Call Address Not Resolved
		ADD EBX, 0502h
		ADD ESI, EDI
		PUSH EDI
		PUSH EBX
		PUSH ESI
		CALL memcpy; <= Jump / Call Address Not Resolved
		SUB ESI, DWORD PTR SS : [EBP + 0Ch]
		MOV EAX, DWORD PTR SS : [EBP + 010h]
		ADD ESP, 018h
		ADD ESI, EDI
		MOV DWORD PTR DS : [EAX], ESI
		POP EDI
		POP ESI
		POP EBX
		POP EBP
		RETN 0Ch; <= Procedure End

	xiadan_00568A38:; <= Procedure Start

		PUSH EBP
		MOV EBP, ESP
		PUSH DWORD PTR SS : [EBP + 018h]
		PUSH DWORD PTR SS : [EBP + 014h]
		PUSH DWORD PTR SS : [EBP + 010h]
		PUSH DWORD PTR SS : [EBP + 0Ch]
		PUSH DWORD PTR SS : [EBP + 8]
		CALL hashAlgData; <= Jump / Call Address Not Resolved
		ADD ESP, 014h
		NEG EAX
		SBB EAX, EAX
		INC EAX
		POP EBP
		RETN 014h; <= Procedure End



	ASM_END
}

